1.设计模式其实就是过去人们面对同样的软件设计问题所学来的经验。
2.学习的重点:
- 事关紧要的模式
- 何时使用某个设计模式,为什么使用该模式
- 如何在自己的设计中马上采用这些设计模式
- 何时不该使用设计模式,如何避免对设计模式狂热
模式是基于哪些面向对象设计原则设计出来的
注:
个人感觉这几点不仅仅是设计模式的学习原则,也是一个其他技术的学习准则,有个基本认知,然后知道什么时候使用,如何使用,怎么用,何时不该用,是怎么设计出来的?
3.在该书中介绍了OO原则,不可以轻视,OO原则是设计两难的时候做出判断的标准。OO原则是我们的目标,而设计模式是我们的做法。
4.当涉及“ 维护”时,为了“复用”(reuse)目的 而 使 用 继 承 ,结局并不完美。这里书中举得例子是Duck鸭子的例子,有swim(),quack(),display(),添加新功能fly,在超类Duck上添加fly方法,结果是全部鸭子都会飞,却没注意到橡皮鸭也会飞了。有人想到可以把fly方法覆盖掉,变成什么也不做。如果再添加一个诱饵鸭(木鸭),那么要把quack()和fly()都覆盖掉,变成什么也不做。
那么可知,利用继承可能会造成很多问题,比如:
a. 代码在多个子类中重复
b. 运行时的行为不容易改变
c. 很难知道所有鸭子的全部行为
d. 改变会牵一发动全身,造成其他鸭子不想要的改变
5.改成利用接口实现呢?
这真是一个超笨的主意,你没发现这么一来重复的代码会变多吗?如果你认为覆盖几个方法就算是差劲,那么对于48个Duck的子类都要稍微修改一下飞行的行为,你又怎么说?!
那该如何去做呢?
我们会用老方法找出一个解决之道:“采用良好的OO软件设计原则”。
6.软件开发的一个不变真理