CS133-lecture-20210227

Design Patterns #

image_2021-02-27-13-30-45 image_2021-02-27-13-31-23

Strategy pattern #

image_2021-02-27-13-32-20 image_2021-02-27-13-36-03 image_2021-02-27-14-40-16

An example in codename one

image_2021-02-27-14-40-26 image_2021-02-27-14-40-37 image_2021-02-27-14-41-13 image_2021-02-27-14-42-07 image_2021-02-27-14-42-54 image_2021-02-27-14-43-47 image_2021-02-27-14-44-46

Composite pattern #

image_2021-02-27-13-39-54 image_2021-02-27-13-42-24 image_2021-02-27-13-42-35

An example of the “wrong way to do things”

image_2021-02-27-13-43-01

A refactored way:

image_2021-02-27-13-45-19 image_2021-02-27-13-46-00 image_2021-02-27-13-46-59 image_2021-02-27-13-47-19 image_2021-02-27-13-48-14 image_2021-02-27-13-48-43

Decorator pattern #

image_2021-02-27-13-48-59 image_2021-02-27-13-53-35

As a reminder, this is not the same as the composite pattern:

image_2021-02-27-14-08-40

State pattern #

image_2021-02-27-14-08-58 image_2021-02-27-14-14-38

Pree’s metapatterns #

Concerning the state pattern vs the strategy pattern

image_2021-02-27-14-19-52 image_2021-02-27-14-20-18 image_2021-02-27-14-20-39

Singleton pattern #

image_2021-02-27-14-23-13 image_2021-02-27-14-23-31 image_2021-02-27-14-24-03 image_2021-02-27-14-24-13 image_2021-02-27-14-24-32 image_2021-02-27-14-27-02

Note the synchronize keyword in the method header, this makes the method thread safe.

Factory pattern #

image_2021-02-27-14-27-46 image_2021-02-27-14-28-19 image_2021-02-27-14-29-14 image_2021-02-27-14-29-57 image_2021-02-27-14-30-25 image_2021-02-27-14-31-07 image_2021-02-27-14-31-57 image_2021-02-27-14-32-21 image_2021-02-27-14-34-24 image_2021-02-27-14-34-54 image_2021-02-27-14-36-40

Abstract factory pattern #

image_2021-02-27-14-38-49