面向对象软件设计原则
最近,公司老总推荐一篇文章,关于软件设计原则的,感觉不错,记录以下供以后查阅。
这些设计原则,不仅仅是指软件开发...
Don’t Repeat Yourself (DRY)
Keep It Simple, Stupid (KISS)
Program to an interface, not an implementation
Command-Query Separation (CQS) – 命令-查询分离原则
You Ain’t Gonna Need It (YAGNI) <you are not going to need it>
Law of Demeter <Principle of Least Knowledge>
对于对象 ‘O’ 中一个方法’M',M应该只能够访问以下对象中的方法:
对象O;
1与O直接相关的ComponentObject;
2由方法M创建或者实例化的对象;
3 作为方法M的参数的对象。在《Clean Code》一书中,有一段Apache framework中的一段违反了LoD的代码:
final String outputDir = ctxt.getOptions().getScratchDir().getAbsolutePath();
面向对象的S.O.L.I.D 原则
SingleResponsibilityPrinciple(SRP)–职责单一原则
Open/ClosedPrinciple(OCP)–开闭原则
Liskovsubstitutionprinciple(LSP)–里氏代换原则
InterfaceSegregationPrinciple(ISP)–接口隔离原则
Dependency Inversion Principle (DIP) – 依赖倒置原则Common Closure Principle(CCP)– 共同封闭原则
Common Reuse Principle (CRP) – 共同重用原则
Hollywood Principle – 好莱坞原则
High Cohesion & Low/Loose coupling & – 高内聚, 低耦合
Convention over Configuration(CoC)– 惯例优于配置原则
Separation of Concerns (SoC) – 关注点分离
Design by Contract (DbC) – 契约式设计
Acyclic Dependencies Principle (ADP) – 无环依赖原则