Download - Design patterns for beginners (1/ 2)
![Page 1: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/1.jpg)
DESIGN PATTERNS FOR
BEGINNERS (1/2)
Mustapha Tachouct
2016/10/19
![Page 2: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/2.jpg)
Contents
• What are Design Patterns?
• Gang Of Four
• Usage of Design Patterns
• 3 Types of Design Patterns
• 12 Design Patterns
![Page 3: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/3.jpg)
[What are Design Patterns?]- Design patterns are solutions to general
problems that software developers faced during software development
- Design patterns represent the best practices used by experienced object-oriented software developers
- These solutions were obtained by trial and error
![Page 4: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/4.jpg)
[Gang Of Four (GOF)]
- In 1994, four authors Erich Gamma, Richard Helm, Ralph Johnson and John Vlissidespublished a book
- "Design Patterns - Elements of Reusable Object-Oriented Software"
![Page 5: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/5.jpg)
[3 Facts]
- A Design Pattern is an idea not an implementation
- There are 99+ referenced Design Patterns
- The majority of OO developers uses Design Patterns without to know
![Page 6: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/6.jpg)
[Usage of Design Pattern]
Two main usages :
- Common language for developers
- Best Practices
![Page 7: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/7.jpg)
• Creational Patterns1
• Structural Patterns2
• Behavioral Patterns3
3 Types in 23 Design Patterns
![Page 8: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/8.jpg)
[3 Types : Creational Patterns (1/3)]
• provide a way to create objects while hiding the creation logic
• replace the using of new operator
![Page 9: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/9.jpg)
[3 Types : Structural Patterns (2/3)]
- Manage realtionships between entities
- Define ways to add new functionalities
![Page 10: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/10.jpg)
[3 Types : Behavioral Patterns (3/3)]
• concerne with communication between instances
• Increase flexibility the perform of this communication
![Page 11: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/11.jpg)
[12 Patterns]
• Singleton, Factory, Iterator, Bridge, Proxy
• Strategy, Chain Of Responsibility, Prototype
• Memento, Adapter Observer, Mediator
![Page 12: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/12.jpg)
[Singleton (1/23)]
• A unique instance for all the program
• Example : Constructor in private + a static member for the instance
• type : creational pattern
![Page 13: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/13.jpg)
[Singleton (1/23)]
![Page 14: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/14.jpg)
[Singleton (1/23)]
![Page 15: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/15.jpg)
[Factory (2/23)]
• Create instance(s) without exposing the creation logic
• type : creational pattern
![Page 16: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/16.jpg)
[Factory (2/23)]
![Page 17: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/17.jpg)
[Factory (2/23)]
![Page 18: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/18.jpg)
[Iterator (3/23)]- This pattern is used to get a way to access the elements of a collection object in sequential- The Data Structure is hidden (list, tree, array, map, stack, ...)- type : behavioral pattern
![Page 19: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/19.jpg)
[Iterator (3/23)]
![Page 20: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/20.jpg)
[Iterator (3/23)]
![Page 21: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/21.jpg)
[Bridge (4/23)]- Used when we need to decouple an abstraction from its implementation- type : structural pattern
![Page 22: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/22.jpg)
[Bridge (4/23)]
![Page 23: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/23.jpg)
[Bridge (4/23)]
![Page 24: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/24.jpg)
[Proxy (5/23)]- a proxy is also named a wrapper- can simply be forwarding to the real object or can provide additional logic- can also delay the creation of an instance- type : structural pattern
![Page 25: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/25.jpg)
[Proxy (5/23)]
![Page 26: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/26.jpg)
[Proxy (5/23)]
![Page 27: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/27.jpg)
[Strategy (6/23)]- allow to change a algorytm on fly (among a family of algorytms)- type : behavior pattern
![Page 28: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/28.jpg)
[Strategy (6/23)]
![Page 29: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/29.jpg)
[Strategy (6/23)]
![Page 30: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/30.jpg)
[Chain Of Responsability (7/23)]- creates a chain of receiver objects for a request- each receiver contains reference to another receiver- type: behavioral pattern
![Page 31: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/31.jpg)
[Chain Of Responsability (7/23)]
![Page 32: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/32.jpg)
[Chain Of Responsability (7/23)]
![Page 33: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/33.jpg)
[Chain Of Responsability (7/23)]
![Page 34: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/34.jpg)
[Chain Of Responsability (7/23)]
![Page 35: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/35.jpg)
[Prototype (8/23)]- creating a duplicated instance while keeping performance in mind (that you want to modify)- type : creational pattern
![Page 36: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/36.jpg)
[Prototype (8/23)]
![Page 37: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/37.jpg)
[Prototype (8/23)]
![Page 38: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/38.jpg)
[Prototype (8/23)]
![Page 39: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/39.jpg)
[Memento (9/23)]- used to restore state of an instance to a previous state (ex .undo/redo)- type: behavioral pattern
![Page 40: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/40.jpg)
[Memento (9/23)]
![Page 41: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/41.jpg)
[Memento (9/23)]
![Page 42: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/42.jpg)
[Memento (9/23)]
![Page 43: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/43.jpg)
[Adapter (10/23)]- involves a single class which is responsible to join functionalities of incompatible interfaces- type : structural pattern
![Page 44: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/44.jpg)
[Adapter (10/23)]
![Page 45: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/45.jpg)
[Adapter (10/23)]
![Page 46: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/46.jpg)
[Adapter (10/23)]
![Page 47: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/47.jpg)
[Adapter (10/23)]
![Page 48: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/48.jpg)
[Adapter (10/23)]
![Page 49: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/49.jpg)
[Observer (11/23)]- When a instance is modified, its observer(s) receive(s) a notification- type: behavioral pattern
![Page 50: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/50.jpg)
[Observer (11/23)]
![Page 51: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/51.jpg)
[Observer (11/23)]
![Page 52: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/52.jpg)
[Observer (11/23)]
![Page 53: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/53.jpg)
[Observer (11/23)]
![Page 54: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/54.jpg)
[Mediator (12/23)]- reduce communication complexity between multiple objects or classes- type: behavioral pattern
![Page 55: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/55.jpg)
[Mediator (12/23)]
![Page 56: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/56.jpg)
[Mediator (12/23)]
![Page 57: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/57.jpg)
CONCLUSION
![Page 58: Design patterns for beginners (1/ 2)](https://reader031.vdocument.in/reader031/viewer/2022030217/5887917a1a28ab5b1a8b5253/html5/thumbnails/58.jpg)
Ressources
• https://sourcemaking.com/design_patterns
• https://gist.github.com/pazdera/
• http://come-david.developpez.com/tutoriels/dps/
• https://www.tutorialspoint.com/