一. 单一职责原则
一个类,只有一个引起它变化的原因,应该只有一个职责。
如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。
二. 开放-封闭原则(OCP,Open Closed Principle)
是所有面向对象原则的核心。软件实体(类、模块、函数等)应该是可扩展,而不可修改的。也就是说,对扩展是开放的,而对修改是封闭的。
开放封闭原则主要体现在两个方面:
- 对扩展开放,意味着有新的需求或变化时,可以对现有代码进行扩展,以适应新的情况。
- 对修改封闭,意味着类一旦设计完成,就可以独立完成其工作,而不要对类进行任何修改。
实现开放封闭的核心思想就是对抽象编程,而不对具体编程,因为抽象相对稳定。让类依赖于固定的抽象,所以对修改就是封闭的;而通过面向对象的继承和对多态机制,可以实现对抽象体的继承,通过覆写其方法来改变固有行为,实现新的扩展方法,所以对于扩展就是开放的。
在类的结构设计上,每一个类都应当尽量降低成员的访问权限。其根本思想是强调了类之间的松耦合。
三. 里氏代换原则(Liskov Substitution Principle LSP)
一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。即,在软件里面,把父类都替换成他的子类,程序的行为没有变化。
子类型必须能够替换掉他们的父类型。(子类继承了父类,所以子类可以以父类的身份出现)。
由于子类型的可替换性,才使得使用父类类型的模块在无需修改的情况下就可以扩展。
四. 依赖倒转原则(Dependence Inversion Principle)
要依赖于抽象,不要依赖于具体。简单的说就是要求对抽象进行编程,不要对实现进行编程,这样就降低了客户与实现模块间的耦合。
- 面向过程的开发,上层调用下层,上层依赖于下层,当下层剧烈变动时上层也要跟着变动,这就会导致模块的复用性降低而且大大提高了开发的成本。
- 面向对象开发很好的解决了这个问题,一般情况下抽象的变化概率很小,让用户程序依赖于抽象,实现的细节也依赖于抽象。即使实现细节不断变动,只要抽象不变,客户程序就不需要变化。这大大降低了客户程序与实现细节的耦合度。
总结:依赖倒置原则
A.高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。
B.抽象不应该依赖于具体,具体应该依赖于抽象。
也叫最少知道原则(Least Knowledge Principle 简写LKP),就是说一个对象应当对其他对象有尽可能少的了解,不和陌生人说话。英文简写为: LoD.五. 迪米特法则(Law of Demeter)
在类的结构设计上,每一个类都应当尽量降低成员的访问权限。其根本思想是强调了类之间的松耦合。
六. 合成/聚合复用原则
尽量使用合成/聚合,尽量不要使用类继承。
聚合表示一种弱的“拥有”关系,体现的是A对象可以包含B对象,但B对象不是A对象的一部分;如大雁和群雁就是聚合关系。
合成则是一种强的“拥有”关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样,如大雁和翅膀就是合成关系。
10万+

被折叠的 条评论
为什么被折叠?



