博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

Head First 设计模式-1

Posted on 2011-12-31 17:56  theok  阅读(156)  评论(0)    收藏  举报
  • 找出应用中可能需要变化之处,把它们独立出来,不要和那些不需要变化的代码混在一起。
    • 把会变化的部分取出并封装起来,以便以后可以轻易地改动或扩充此部分,而不影响不需要变化的其他部分。
    • 把不变的放在接口里,而变化放在实现里。
  • 针对接口(超类型)编程,而不是针对实现编程。
  • 多用组合,少用继承。
  • 类应该对扩展开发,对修改关闭。

策略模式:定义了算法族,分别封装起来,让它们之间可以互相替换。此模式让算法的变化独立于使用算法的客户。

想想那只会叫会飞的鸭子。

观察者:气象站的实现

装饰对象:星巴克咖啡

 

简单工厂/工厂方法/抽象工厂: 做比萨

Singleton: threadpool, cache, registry  -  巧克力工厂的锅炉

处理多线程,把getInstance()变成同步(synchronized)方法,但是会降低性能。

双重检查加锁。。volatile

 

命令模式:封装调用 餐厅,遥控器,日志请求,qscript - 将动作封装成命令对象

Command.excute() //Core

Think about Qscript.excute().

每个command对象可以当作线程放在线程池中,取出来即可执行

 

适配器和外观

Adapter:将一个接口换成另一个接口。 实现方式:继承和组合

Facade:让接口更简单

装饰者:不改变接口,但是加入责任