您的位置:首页 > 其它

学习笔记(十二)—设计模式(续)

2016-10-02 20:37 120 查看
上次只是介绍了部分的设计模式,这次为所学到的全部的设计模式笔记:

1,Template Method

是一种基础的设计模式,在这个对象系统中有着大量的应用,它用最简洁的机制(虚函数的多态性)为很多应用程序框架提供了很灵活的扩展点,是代码复用的基本实现结构。

另一个重要特点是“不要调用我,让我来调用你”的反向控制结构。

在具体实现方面,被TemplateMethod调用的虚方法可以具体实现,也可以没有人格实现(抽象方法,纯虚方法),但是一般推荐设置为protected方法。

2.Strategy模式

Strategy及子类为组件提供一系列和可重用的算法,从而可以使得类型在运行时方便地根据需要在各个算法之间进行切换。

Strategy模式提供了用条件判断语句以外的另一种选择,消除条件语句就是解耦和。含有许多条件判断语句的代码通常都需要Strategy模式。

如果Stragety对象没有实例变量,那么各个上下文可以共享一个Strategy对象,从而节省对象开销。

3.Observer模式

使用面向对象的抽象,Observer模式使得我们可以独立地的改变目标与观察者,从而使两者之间的依赖关系达致松耦合。

目标发送通知时,无需指定观察者,通知(可以携带通知信息作为参数)会自动传播。

观察者自己决定是否需要订阅通知,目标对象对此一无所知。

Observer模式是基于事件的UI框架中非常常用的设计模式,也是MVC模式的一个重要组成部分。

4.Decortor模式

通过组合而非继承的手法,Decorator模式实现了在运行时动态扩展对象功能的能力,而且可以根据扩展多个功能。避免了使用继承带来“灵活性差”和“多子类衍生问题”。

Decorator模式的目的并非解决“多子类衍生的多继承问题”,Decorator模式应用的要点在于解决“主体类在多个方向上的扩展功能”

5.Bridge模式

使用“对象间的组合关系”解耦了抽象和实现之间固有的绑定关系,使得抽象和实现可以沿着各自的维度来变化。

Bridge模式有时候类似于多继承方案,但是多继承方案往往违背单一职责原则(即一个类只有一个变化的原因),复用性比较差。Bridge模式是比多进程方案更好的解决方法。

6.Factory Method模式

Factory method模式用于隔离类对象的使用者和具体类型之间的耦合关系。面对一个经常变化的具体类型,紧耦合关系会导致软件的脆弱。

Factory Method模式通过面对对象的手法,将所要创建的具体对象工作延迟到子类,从而实现一种扩展的策略,较好地解决了这种紧耦合关系。

Factory Method模式解决“单个对象”的需求变化,缺点在于要求创建方法/参数相同。

7.Abstract Factory工厂

该模式主要在于应对“新系列”的需求变动。其缺点在于难以应对“新对象”的需求变动。

如果没有应对“多系列对象构建”的需求变化,则没有必须使用这个模式,这时候使用简单工厂完全可以。

8.Prototype原型模式

Prototype模式对于“如何创建易变类的实体对象”采用“原型克隆”的方法来做,它使得我们可以非常灵活地动态创建“拥有某些稳定接口”的新对象——所需工作仅仅是注册一个新类的对象,然后再任何需要的地方Clone,Clone方法可以利用某些框架中的序列化来实现深拷贝。

9.Singleton单件模式

保证一个类仅有一个实例,并提供一个该实例的全局访问点

10.Flyweight享元模式

采用对象共享的做法来将对系统中对象的个数,从而降低细粒度对象给系统带来的内存压力。

10.Facade模式

简化了整个组件系统的接口,更加注重从架构的层次去看整个系统,而不是单个的类的层次。

11.Proxy代理模式

为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。

12.Adapter适配器

将一个类的接口转化成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以工作。

13.State状态模式

允许一个对象在其内部状态改变时改变它的行为,从而使对象看起来似乎修改了其行为。

14.Composite组合模式

将对象组合成树形结构以表示“部分-整体”的层次结构。Composite使得用户对单个对象和组合对象的使用具有一致性(稳定)。

15.Iterator迭代器

提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露(稳定)该对象的内部表示。

16.Command命令模式

将一个请求(行为)封装为一个对象,可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销操作。

17.Visitor访问器

表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义(扩展)作用于这些元素的新操作。

18.Interpreter解析器

给定一个语言,定义一种解释器来解释语言中的句子。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: