一、单一功能(single responsibility)
单一功能原则,也叫单一职责原则。简单来说,就是一个类应该只有一个引起它变化的原因,其中心思想就是面向对象设计原则中的高内聚,低耦合。当分析有一个以上的原因引起某个类的需要修改,就应该尽量根据引发类修改的原因将该类拆分为多个类。
二、开闭原则(open/closed)
对扩展开放,对变化闭合。开闭原则指导的是对于已经完成测试并上线的类,如果需求发生变化,应该通过其他方法去扩展其功能而不是在原有功能类上进行修改。对于很多大型软件的向下兼容其实就是遵守了这个原则。
三、里氏替换(Liskovsubsititution)
里氏替换,也叫里氏代换,有一种描述是任何应用父类的地方都可以用子类替换,其本质是指在继承关系中子类可以扩展父类的方法,但不应修改父类的方法。在面向对象开发语言中,通过特定关键字,子类可以重写使得方法在子类调用中表现出特定的逻辑,这就违背了里氏替换。里氏替换其实就是开闭原则的一个应用场景。
四、接口隔离(interface segregation)
在设计上应将接口尽量拆分,使得客户端调用接口类时,类中只包含客户感兴趣的接口。
五、依赖反转(dependency inversion)
也叫依赖倒置,高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节,细节应该依赖抽象,通俗的将就是面向接口编程。
六、迪米特法则(Law of Demeter,LoD)(补充)
也叫最少知识原则(Least Knowledge Principle,LKP),如果两个实体无须直接通信,则不要直接通信。