30
Structural Design Patterns Kuan-Ting Lai 2020/4/12 OOP Class Abstra ction Inheri -tance En- capsu- lation Poly- mor- phism

Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Structural Design Patterns

Kuan-Ting Lai

2020/4/12

OOPClass

Abstraction

Inheri-tance

En-capsu-lation

Poly-mor-

phism

Page 2: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Structural Design Patterns

Creational Design Patterns

Initialize objects or create new

classes

Structural Design Patterns

Compose objects to get new functions

Behavioral Design Patterns

Communication between objects

Page 3: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Structural Design Patterns

•Adapter

•Bridge

•Composite

•Decorator

• Façade

• Flyweight

•Proxy

Page 4: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism
Page 5: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

AdapterPattern

Page 6: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Adapter

• Adapter works as a bridge between two incompatible interfaces

• Object adaptor

• Class adaptor

Page 7: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Inheritance vs. Composition

Page 8: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Object Adaptor

• Client Interface describes a protocol that other classes must follow

• Adapter is a class that implements the client interface and composite a service object

Page 9: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Class Adaptor

• Inherit from both client and service class

Page 10: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Example: MediaPlayer

https://www.tutorialspoint.com/design_pattern/adapter_pattern.htm

Page 11: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Bridge Pattern

• Split a large class into two separate hierarchies: abstraction and implementation

Page 12: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Bridge Example: Colorful Shapes

Page 13: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Separating Shape and Color

• The Bridge pattern attempts to solve this problem by switching from inheritance to composition

Page 14: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Using Composition to Implement New Function

Page 15: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Composite Pattern

• Compose objects into a tree structure

Page 16: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Document Structure

• Recursive composition of text and graphics

Page 17: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Composite Pattern

Page 18: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Composite Structure

• Component interface describesoperations that are common toboth simple and complex elementsof the tree

• Leaf is a basic element withoutsub-elements

• Container (aka composite) is anelement that has sub-elements

Page 19: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Decorator

• Attach new behaviors to objects by placing these objects

Page 20: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Embellishing the User Interface (Decorator)

• Decorator Pattern: support embellishment by transparent enclosure

Page 21: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

FACADE

Page 22: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

FACADE• Define a new interface for existing many objects

Page 23: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

FLYWEIGHT

• Fit more objects into RAM by sharing common parts of state between multiple objects

Page 24: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Example: Game Displaying

Page 25: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism
Page 26: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism
Page 27: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Proxy

Page 28: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Proxy Structure

• Lazy initialization

• Access control

• Local execution of a remote service

• Logging requests

• Caching results

• Garbage collection

Page 29: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

Example: Internet Proxy

https://www.javatpoint.com/proxy-pattern

Page 30: Structural Design Patterns - AIoT Lab · 2020. 4. 21. · Structural Design Patterns Kuan-Ting Lai 2020/4/12 Class OOP Abstra ction Inheri-tance En-capsu-lation Poly-mor-phism

References

• Alexander Shvets, “Dive into Design Patterns,” 2018

• https://www.tutorialspoint.com/design_pattern/index.htm

• https://www.javatpoint.com/design-patterns-in-java

• https://www.startertutorials.com/patterns/select-design-pattern.html