单一职责原则
一个类承担的职责过多,就等于把这些职责耦合在一起,职责增多可以考虑分离,写成类或接口,使得程序利于复用。
开-闭原则
不能修改,但可以扩展。比如写一个计算器程序,开始只是基本的加减乘除运算,后期可能会添加求N次方的功能,此时就可以考虑开-闭原则,通过增加抽象运算类,运用多态性手段隔离具体算法,减少耦合,而非去更改现有的代码。开闭原则也是面向对象设计的核心所在,遵循它可以使得我们的应用程序可维护、可扩展、可复用、灵活性好。
里氏代换原则
子类必须能替换父类。即在软件中,把父类都替换成子类,程序的行为不能发生变化。书中有个很好的例子,一个鸟类,一个企鹅类,鸟可以飞,企鹅不会飞,生物学上定义企鹅是一种特殊的鸟,那么能够让企鹅类继承鸟类呢?答案是不能,里氏代换原则告诉我们,鸟会飞,企鹅类继承鸟类那么企鹅类必须要能飞才能替换父类。因此,继承的前提是能够替换父类,父类才能得到真正的复用,子类才能在此基础上增添新功能。
迪米特法则
如果两个类不必彼此通信,那么这两个类就不应当发生直接相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。迪米特法则强调类之间的松耦合。
依赖倒转原则
针对接口编程,不要对实现编程。A.高层模块不应该依赖低层模块。两个都应该抽象。B.抽象不应该依赖细节,细节应该依赖于抽象。以PC机易拔插的特性,在面向对象中称为强内聚、松耦合,对外都是针脚式或触电式等标准的接口,因此不同厂商制造的鼠标,键盘,内存条只要遵循相同的接口,不同厂商内部具体细节可以不同。
声明:本站所有文章均为原创或翻译,遵循署名 - 非商业性使用 - 禁止演绎 4.0 国际许可协议,如需转载请确保您对该协议有足够了解,并附上作者名 (Tsukasa) 及原文地址