Head First 设计模式-- 总结

模式汇总:
装饰者  :包装一个对象以得到新的行为
状态     :封装了基于状态的行为,并使用委托在行为之间切换
迭代器  :在对象的结合中游走,而不暴露集合的实现
外观     :简化一群类的接口
策略     :封装可以互换的行为,病史用委托类决定要使用哪一个
代理     :包装对象,以控制对此对象的访问
工厂方法   :由子类决定要创建的对象是哪一个
适配器    :封装对象,并提供不同的接口
观察者    :让对象能够在状态改变时被通知
模板方法   :由子类决定如何实现一个算法中的步骤
组合     :客户用一致的方式处理对象集合和单个对象
单例     :确保有且只有一个对象被创建
抽象工厂   :允许客户创建对象的家族,而无需指定他们的具体类
命令     :封装请求成为对象

用到的设计原则:

  • 封装变化
  • 多用组合少用继承
  • 针对接口编程,不针对实现编程
  • 松耦合
  • 开闭原则(类应该对扩展开放对修改关闭)
  • 依赖抽象,不依赖具体
  • 迪米特原则(只和朋友交谈)
  • 别找我,我会找你
  • 类应该只有一个改变的理由

模式分类:
创建型:Singleton,  Builder,   Abstract Factory,  Factory Method,  Prototype
行为型:Template Method,  Visitor,  Iterator,  Command,  Observer,  State,  Strategy
结构型:Decorator,  Proxy,  Composite,  Bridge,  Adapter,  Flyweight

我们使用设计模式的目的是为了让我们的代码更简单,让以后更容易扩展。使用设计的模式的时候,一定会比不使用设计的代码更复杂,因此,对于一些没必要使用设计模式的地方,就不要使用设计模式。像一些以后不会修改的地方,不会扩展的地方,直接写就可以了,不要增加冗余的代码来增加什么设计模式。一段有设计模式的代码更从其他人的角度来看更加难理解。在使用设计模式的时候一定权衡好,时刻记住一点,我们使用设计模式只是为了增加我们以后的扩展性。还有,在写完一段代码的时候,想想怎么可以重构一下简化代码,实际上,写程序的逻辑应该只是写完这段代码花的时间最少的一部分,更多的时间应该是整理代码,能重用的就重用。

写代码的时候记住那些设计原则就能帮助我们写出优秀的代码。

读后感:这篇文章是读完这本几天后写的,在一开始看的时候,肯定是看到哪个模式的时候已经把这个模式自我感觉看透了,但是现在在回头想想,能像一开始那样记住的并不剩几个了,给我的感觉其实并不必要去死记硬背一些什么模式改怎么写,主要在脑子里有一些设计模式的概念,在碰到问题的时候,先从脑子搜索一下哪个模式能解决类似的问题,到那时候在去找也可以,如果从设计原则出发开始思考问题,也许到时候不知不觉的就发现,原来这个地方我还用到了设计模式。所以,这本给我最大的收益就是让我记住了那些设计原则,在写代码的时候能先从设计原则出发思考问题。并没有强求硬要写什么模式,模式只是为了以后扩展方便,如果你都不知道哪个地方以后会扩展,那在第一次就写那么复杂的代码干什么,想让别人知道自己多NB?如果知道了这个地方以后一定会有扩展,那么,一定要想好用哪个设计模式,这种时候才是应该用设计模式的地方。这本书后面还面还有几个模式,这里也就不写了,抓住重点就可以了。

posted @ 2017-01-04 09:05  bad_boy_f  阅读(511)  评论(0编辑  收藏  举报