《Head First 设计模式》阅读

本文通过《Head First 设计模式》一书中的鸭子例子,探讨了设计模式的本质和面向对象设计原则。强调了设计模式是解决软件设计问题的经验总结,指出在继承中可能出现的问题,提倡通过封装变化部分来提高代码的灵活性和可维护性。文章通过引入行为接口,展示了如何将飞行和呱呱叫的行为从鸭子类中分离,实现了动态改变行为的能力,进一步阐述了“针对接口编程”的重要性。
摘要由CSDN通过智能技术生成

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.软件开发的一个不变真理

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值