设计模式读书笔记

来源:互联网 发布:java中try catch怎么用 编辑:程序博客网 时间:2024/05/22 01:40

      最近读了下head first的《设计模式》,真是发现相见恨晚啊,最近做项目也无意发现有自己用过的,以后想尽量在项目中多用到,这里记录下自己的读书笔记。


1.Decorator Pattern(修饰模式)

以书中咖啡和佐料的例子,就是通过让佐料和咖啡继承自相同的虚基类,使得每个佐料类里可以新增自己佐料变量并且保持一个原始虚基类类型的一个咖啡类或者佐料类,从而实现一层包住一层,产生各种各样的咖啡。而最近写情侣空间用的AOP技术就是decorator模式。


2.Singleton Pattern(单实例模式)

保持全局只有一个实例产生,通常采用的方法是将该类的构造函数定义为private且为static,并通过一个getInstance函数给外部获取该类对象,而保证对象唯一就是在该函数里判断。通常有lazy和eager两种加载模式,区别在于后者在一开始便实例化对象,前者等待函数第一次调用才构造,若在多线程操作的情况下若不注意同步问题则容易实例化两个对象,因此eager加载会显得更为适合。


3.Adapter Pattern(适配器模式)

比如欧洲的大插头问题,解决的问题是使用一个中间类来统一接口,比较简单不多说了。


4.Factory Pattern(工厂模式)

如遥控器问题,将许多不同功能的组建封装在一起,只用给定一个信号就能获取对应组件的功能,核心思想是将判断过程筛选和对多个类对象进行封装。


5.Strategy Pattern(策略模式)

如销售衣服问题,有打5折,减100等策略,可用一个Sale类来接收相应策略类对象作为其中一个变量的值,相应用一个对外的接口返回使用了策略后的结果。


6.Prototype Pattern(原型模式)

将对象进行克隆(深度拷贝),对于很复杂而且在过程中发生变化的类对象比较适用。


7.Mediator Pattern(中介模式)

对于多个有关联的类,可以构造一个中间类,传递它们之间的关联操作。


8.Flyweight Pattern(轻量模式)

如庄园种树问题,原本需要实例化很多的Tree类对象,但是可以在一个TreeManager类里维护一个treeArray来保存这些树的信息而不需要真正去构造这些树,减少内存浪费。


9.Builder Pattern(生产者模式)

如holiday安排日程问题,封装好生成步骤,并可在操作步骤的任何时间获取到对象,减去了许多重复的操作。


Fine~先总结那么多,GoF里还有不少经典的模式,之后再做补充。



原创粉丝点击