这几天重新读这本书,有一些体会记下来。

1。关于“解藕”

解藕就是降低耦合度,也是就减少不同对象和类之间的依赖性,这个词在书中反复出现,很多设计模式的核心目的就是解藕。工厂模式把创建对象的部分分离,观察者模式将观察者对象和被观察主题解藕,命令模式将命令的创建者与执行者之间解藕,适配器模式将调用者与被调用者解藕。那么松耦合有什么好处,一是好维护,使得代码结构清晰方便日后修补,不至于牵一发动全身,还有就是降低错误率,依赖越多越容易出问题。

2。关于“复用”

我觉得这并不是设计模式的核心目标,有时使用一些模式可能会要写更多的代码,所以设计模式不是让我们少写代码,而是少改代码。

3。封装变化

这也是设计模式的基本原则,把可能会改变的部分封装起来与不变的部分隔开,前提是你得有需要改变的地方,不能为了用设计模式而用设计模式。

4。设计模式常用的技术

再好的模式也得用代码实现,我觉得设计模式最核心的技术就是利用oo语言的多态性实现晚绑定。看了这本书更深刻理解了多态的重要性,很多模式中最重要的几行代码就是使用抽象类或接口,我想这也是oo设计最突出的特点。另一个常用的技术就是使用中间件,把几个对象间依赖性转移到一个中间件上,从而实现了对象间的解藕。

ps:有个疑问为什么java c#等语言不支持多继承,难道只是为了防止混乱?网上找了一下没得到满意的答案。