读《大话设计模式》和《head first 设计模式》心得

1.面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类。

2.如果你能够想到多于一个的动机去改变一个类,那么这个类就具有多于一个的职责。就一个类而言,应该仅有一个引起它变化的原因。

3.开放-封闭原则是面向对象设计的核心所在。遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护、可扩展、可复用、灵活性好。开发人员应该仅对程序员呈现出频繁变化的那些部分做出抽象,然而,对于应用程序中每个部分都刻意地进行抽象同样不是一个好主意。拒绝不成熟的抽象和抽象本身一样重要。面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码。

4.里氏代换原则:子类型必须能够替换掉它们的父类型。只有当子类可以替换掉父类,软件单位的功能不受到影响时,父类才能真正被复用,而子类也能够在父类的基础上增加新的行为。(企鹅不能继承鸟类!)

5.迪米特法则(最少知识原则):在类的结构设计上,每一个类都应当尽量降低成员的访问权限,也就是说,一个类包装好自己的private状态,不需要让别的类知道的字段或行为不要公开。如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用,可以通过第三方转发这个调用。也就是说,不要对具体的实现编程,应该对接口编程。

6.合成/聚合利用原则:尽量使用合成/聚合,尽量不要使用类继承。继承是一种强耦合,组合是一种弱耦合。

7.每个地方都采用开放-关闭原则,是一种浪费,也没必要,还会导致代码变得复杂且难以理解。我们需要把注意力集中在设计中最有可能改变的地方,然后应用开发-关闭原则。这牵涉到设计OO系统的经验,和对你工作领域的了解。

8.要依赖抽象,不要依赖具体类。下面的指导方针,能帮你避免在OO设计中违反信赖倒置原则:

   1>变量不可以持有具体类的引用;

    2>不要让类派生自具体类;

    3>不要覆盖蕨类中已实现的方法。

原文地址:https://www.cnblogs.com/cly84920/p/4427108.html