Design Patterns and Design Principles with their best practices and description
Define a family of algorithms, encapsulate each one, and make them interchangeable. Strategy lets the algorithm vary independently from the clients that use it.
- family
- interchangable
- vary independenty
Define an interface for creating an object, but let subclasses decide which class to instantiate. Factory Method lets a class defer instantiation to subclasses.
- family
- interchangable
- vary independenty
Visitor: O-P-E-S
Represent an operation to be performed on the elements of an object structure. Visitor lets you define a new operation without changing the classes of the elements on which it operates.
- represent an
Operation
Performed
on anElements
of object- in a
Structure
Composite: C-T-P-T
Compose objects into tree structures to represent whole-part hierarchies. Composite lets clients treat individual objects and compositions of objects uniformly.
Compose
Tree
structure- represent
Part-whole
hierarchies Treat
individual objects and compositions
Iterator: E-A-S-E
Provide a way to access the elements of an aggregate object sequentially without exposing its underlying representation.
- access
Element
Aggregate
objectSquencially
- wihtout
Exposing
Proxy: S-P-A
Provide a surrogate or placeholder for another object to control access to it.
Surrogate
Placeholder
- control
Access
-
Decorator vs Adapter
Decorator DP | Composite DP |
---|---|
add new behaviour | part-whole hierarchy |
linear structure | tree structure |
one dimensional | two dimensional |
only one node | one or more nodes |