SOLID design Five design principles SOLID design1.
-
Upload
marianna-skinner -
Category
Documents
-
view
215 -
download
1
Transcript of SOLID design Five design principles SOLID design1.
![Page 1: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/1.jpg)
SOLID design 1
SOLID designFive design principles
![Page 2: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/2.jpg)
SOLID design 2
SOLID, what is it?
• Single responsibility principle• A class should have only a SINGLE responsibility
• Change in the specification on that responsibility should only affect this class
• Open/close principle• Each class should be open for extensions (sub-classes), but closed for modifications
• We should never need to modify an existing class
• Liskov substitution principle• Objects in a program should be replaceable with instances of their subtypes without altering the
correctness of that program.• Named after Barbara Liskov
• Interface segregation principle• Many client-specific interfaces is better than one general purpose interface
• Dependency inversion principle• Depend on abstractions, not on concretions
![Page 3: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/3.jpg)
SOLID design 3
SOLID, what is it used for?
• The SOLID principles are used as a guideline• Designing systems• Refactoring systems
• Detecting “smells” in code• Refactor until the code is SOLID
![Page 4: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/4.jpg)
SOLID design 4
Single responsibility principle
• Based on cohesion• A class should do only one thing• Separation of concerns
![Page 5: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/5.jpg)
SOLID design 5
Open/close principle
• Open for extensions• Sub-classes
• Closed for modifications• New functionality should be placed in sub-classes• Overriding methods from the base class
![Page 6: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/6.jpg)
SOLID design 6
Interface segregation principle
• Many client-specific interfaces is better than one general purpose interface• Clients should not be forced to depend upon interfaces that they don't use
![Page 7: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/7.jpg)
SOLID design 7
Dependency inversion principle
• Depend on abstractions, not concretions• Abstractions = interfaces• Concretions = classes
• Loose coupling
Figure from Robert C. Martin http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
![Page 8: SOLID design Five design principles SOLID design1.](https://reader035.fdocuments.in/reader035/viewer/2022081813/5697bfd81a28abf838caf2fa/html5/thumbnails/8.jpg)
SOLID design 8
References and further readings
• Robert C. Martin Design Principles and Design Patterns, 2000• http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf
• michas The S.O.L.I.D Object Oriented Programming (OOP) Principles, 2010• http://www.codeproject.com/Articles/60845/The-S-O-L-I-D-Object-Oriented-Programming-OOP-Prin
• Design Principles• http://www.oodesign.com/design-principles.html