首页 > 代码库 > 设计模式总结1---模式比较
设计模式总结1---模式比较
1.简单工厂模式----工厂模式-----抽象工厂模式
工厂模式的特点就是把相同基类的一组类放在一起管理。
2.策略模式
策略模式就是对于各种策略(算法)进行提取,把各种策略都提取在Strategy接口用,
而客户端只需要使用某种策略就可以了。
3.装饰模式
把每个特定功能放在独立的类里面,并用类包装要装饰的对象。当需要执行特定的行为时,
可以按照特定的顺序进行包装对象了。
装饰模式就是提取各个功能类,通过装饰Decorate类,把各个功能类独立出来,从而可以是他们的顺序打乱。
4.代理模式
代理模式可以很好的剪切功能类的代码,是功能类对于客户端来说是透明的。
而且方便等价功能类之间的切换。
5.原型模式
原型模式就是多个产品类的实例有绝大多的相同属性,但是比不完全相同。
使用原型模式就是把这些相同的属性提取出来。
6.模板方法
模板方法就是抽象基类定义一些算法的骨架,而子类就去实现这些差别,就像做试卷一样,题目都是一样的,只有答案不一样。
7.外观模式
外观模式就是把功能类各种复杂的组合放在一起,由一个facade类组合起来,提供方法,屏蔽功能类和客户端类的交互。
最常见的做法就是,当要操作一个功能的时候,很多时候我们会提供一个engine类来封装该功能。
8.建造者模式
建造者模式抽象出建造过程,也就是建造过程是Director类控制,而具体实现由不用的builder来实现细节。
9.观察者模式
观察者模式抽象出对某个subject状态的监听而改变的过程。也就是说当subject status发生变化时,ISubject接口会通知注册的observer类。
总结:设计模式目的是为了更好的实现面向对象的构架设计。
各种设计模式的特点都是抽象出一些相同的元素:
1.相同的过程,可以归结为method
2.相同的基类:可以使用三个工厂方法
3.相同的行为:算法不同,业务逻辑相同。可以使用策略模式和模板方法
4.特定的行为和关系,但是顺序可以随机:装饰模式
5.事物的属性相同:原型模式
6.功能类对客户端的支持是固定的:外观模式
7.事物的构建过程是相同的:建造者模式
8.事物对于主题的状态变化做相同的响应:观察者模式
设计模式总结1---模式比较