SOLID Design Principles
SOLID is an acronym of design principles that help software engineers write solid code within a project.
- 
S - Single Responsibility Principle. A module should be responsible to one, and only one, actor. a module is just a cohesive set of functions and data structures. 
- 
O - Open/Closed Principle. A software artifact should be open for extension but closed for modification. 
- 
L - Liskov’s Substitution Principle. Simplify code with interface and implementation, generics, sub-classing, and duck-typing for inheritance. 
- 
I - Interface Segregation Principle. Segregate the monolithic interface into smaller ones to decouple modules. 
- 
D - Dependency Inversion Principle. The source code dependencies are inverted against the flow of control. most visible organizing principle in our architecture diagrams. - Things should be stable concrete, Or stale abstract, not ==concrete and volatile.==
- So use ==abstract factory== to create volatile concrete objects (manage undesirable dependency.) 产生 interface 的 interface
- DIP violations cannot be entirely removed. Most systems will contain at least one such concrete component — this component is often called main.
 
