what is solid the s in solid the o in solid the l in solid the i in solid the d in solid ...
TRANSCRIPT
![Page 1: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/1.jpg)
SOLID
![Page 2: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/2.jpg)
WHAT’S HE GONNA TALK ABOUT
What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions
![Page 3: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/3.jpg)
WHAT’S THIS SOLID BUSINESS
SOLID Principles
Object-Oriented Design
En
cap
su
lati
on
Inh
eri
tan
ce
Poly
morp
his
m
![Page 4: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/4.jpg)
WHAT’S THIS SOLID BUSINESS
A means to avoid technical debt Decrease Coupling Increase Cohesion
Maintainable Extensible Testable
![Page 5: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/5.jpg)
WHAT’S THIS SOLID BUSINESS
Guidelines, NOT LAWS
You got to know when to hold’em, know when to fold’em,
Know when to walk away and know when to run.-Kenny Rogers
![Page 6: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/6.jpg)
THE REQUEST 1
Application
Flat File
EmailSender•SendEmail•GetMessage
![Page 7: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/7.jpg)
Single Responsibility Principle
SRP
There should never be more than one reason for a class to change
-Uncle Bob
![Page 8: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/8.jpg)
SINGLE RESPONSIBILITY PRINCIPLE
VIOLATES THE PRINCIPLE ABIDES BY THE PRINCIPLE
Application
Flat File
EmailSender•SendEmail•GetMessage
Application
Flat File
FileReader•GetMessage
EmailSender•SendEmail
![Page 9: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/9.jpg)
A REQUEST 2
Application
Flat File
FileReader•GetMessage
EmailSender•SendEmail
XML File
![Page 10: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/10.jpg)
Open-Close Principle
OCP
Software entities (classes, modules, functions, etc…) should be open for extension, but closed for modification
-Uncle Bob
![Page 11: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/11.jpg)
OPEN-CLOSED PRINCIPLE
VIOLATES THE PRINCIPLE ABIDES BY THE PRINCIPLE
Application
Flat File
FileReader
•GetMessage
EmailSender
•SendEmail
XML File
Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
EmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
![Page 12: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/12.jpg)
REQUEST 3Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
EmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
DB File
DbFileReader
•CanRead•ReadFile
Database
![Page 13: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/13.jpg)
Liskov Substitution Principle
LSP
Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it
-Uncle Bob
![Page 14: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/14.jpg)
LISKOV SUBSTITUTION PRINCIPLE
VIOLATES THE PRINCIPLE ABIDES BY THE PRINCIPLE
Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
EmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
DB File
DbFileReader
•CanRead•ReadFile
Database
Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
EmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
DbReader
•GetMessage
Database
![Page 15: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/15.jpg)
REQUEST 4Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
EmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
Database
IReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
DbReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
![Page 16: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/16.jpg)
Interface Segregation Principle
ISP
Clients should not be forced to depend upon interfaces that they do not use
-Uncle Bob
![Page 17: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/17.jpg)
INTERFACE SEGREGATION PRINCIPLE
ABIDES BY THE PRINCIPLE
Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
EmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
Database
IReader
•GetMessage
DbReader
•GetMessage
IFileTypeReaderRegisterable
•RegisterDefaultFileTypeReader•RegisterFileTypeReader
![Page 18: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/18.jpg)
Dependency Inversion Principle
DIP
High level modules should not depend upon low level modules. Both should depend upon abstractions
Abstractions should not depend upon details. Details should depend upon abstractions
-Uncle Bob
![Page 19: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/19.jpg)
DEPENDENCY INVERSION PRINCIPLE
ABIDES BY THE PRINCIPLE
Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
IEmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
Database
IReader
•GetMessage
DbReader
•GetMessage
IFileTypeReaderRegisterable
•RegisterDefaultFileTypeReader•RegisterFileTypeReader
EmailSender
•SendEmail
![Page 20: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/20.jpg)
WITHOUT SOLID
Application
Flat File
EmailSender•SendEmail•GetMessage
Xml File
Database
![Page 21: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/21.jpg)
WITH SOLID
Application
Flat File
BaseFileTypeReader
•CanRead•ReadFile
IEmailSender
•SendEmail
XML File
FlatFileReader
•CanRead•ReadFile
XmlFileReader
•CanRead•ReadFile
FileReader
•GetMessage•RegisterDefaultFileTypeReader•RegisterFileTypeReader
Database
IReader
•GetMessage
DbReader
•GetMessage
IFileTypeReaderRegisterable
•RegisterDefaultFileTypeReader•RegisterFileTypeReader
EmailSender
•SendEmail
![Page 22: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/22.jpg)
QUESTIONS?
![Page 23: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/23.jpg)
REFERENCE LINKS
Martin Folwer – Technical Debt http://www.martinfowler.com/bliki/TechnicalDebt.html
Wikipedia – Coupling http://en.wikipedia.org/wiki/Coupling_(computer_programmi
ng) Wikipedia – Cohesion
http://en.wikipedia.org/wiki/Cohesion_(computer_science) Robert Martin – The Principles of OOD
http://butunclebob.com/ArticleS.UncleBob.PrinciplesOfOod Derick Bailey – SOLID Principles – Step by step code
https://github.com/derickbailey/presentations-and-training/tree/master/SOLID%20Principles%20-%20Step%20By%20Step%20Code
![Page 24: What is SOLID The S in SOLID The O in SOLID The L in SOLID The I in SOLID The D in SOLID Questions](https://reader036.vdocument.in/reader036/viewer/2022062806/56649f1c5503460f94c32263/html5/thumbnails/24.jpg)
MY INFORMATION
Email – [email protected] Twitter – @tonycwang LinkedIn –
www.linkedin.com/in/tonycwang