常用设计模式的功能、关联和区别

人生之路不会是一帆风顺的,我们会遇上顺境,也会遇上逆境,在所有成功路上折磨你的,背后都隐藏着激励你奋发向上的动机,人生没有如果,只有后果与结果,成熟,就是用微笑来面对一切小事。

导读:本篇文章讲解 常用设计模式的功能、关联和区别,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、设计模式的功能

  1. Bridge桥接模式:在“类的功能层次结构”和“类的实现层次结构”之间搭建桥梁

详见:设计模式学习(一):Bridge桥接模式

  1. Observer观察者模式:将状态变化的通知发送给观察对象

详见:设计模式学习(二):Observer观察者模式

  1. Adapter适配器模式:填补“现有的程序”和“所需的程序”之间差异

详见:设计模式学习(三):Adapter适配器模式

  1. Strategy策略模式:可以整体地替换算法的实现部分

详见:设计模式学习(四):Strategy策略模式

  1. State状态模式:用类来表示状态

详见:设计模式学习(五):State状态模式

  1. Template Method模板方法模式:在父类中定义处理流程的框架,在子类中实现具体处理。将具体的处理交给子类

详见:设计模式学习(六):Template Method模板方法模式

  1. Factory Method工厂模式:将Template Method模式用于生成实例。将实例的生成交给子类

详见:设计模式学习(七):Factory Method工厂模式

  1. Proxy代理模式:如果“本人”对象无法自己亲自完成一些工作,就将其交给“代理人”对象负责

详见:设计模式学习(八):Proxy代理模式

  1. Abstract Factory抽象工厂模式:构建抽象工厂,它会将抽象零件组装为抽象产品

详见:设计模式学习(九):Abstract Factory抽象工厂模式

  1. lterator迭代器模式:在数据集合中按照顺序遍历集合

详见:设计模式学习(十):lterator迭代器模式

  1. Builder建造者模式:组装具有复杂结构的实例

详见:设计模式学习(十一):Builder建造者模式

  1. Decorator装饰器模式:保证装饰物与被装饰物的一致性

详见:设计模式学习(十二):Decorator装饰器模式

二、设计模式之间的关联和区别

2.1 关联和区别

  1. Bridge模式是为了关联“类的实现层次结构”和“类的功能层次结构”。在Template Method模式中就使用了“类的实现层次结构”:父类调用抽象方法,而子类实现抽象方法。

  1. 使用Bridge模式可以达到类的功能层次结构与类的实现层次结构分离的目的,并在此基础上使这些层次结构结合起来。而使用Adapter模式则可以结合那些功能上相似但是接口不同的类。

  1. Adapter模式用于填补不同接口之间的缝隙,而Decorator模式则是在不改变接口的前提下增加功能。

  1. 使用Strategy模式可以整体地替换算法。使用Abstract Factory模式则可以整体地替换具体工厂、零件和产品。

  1. 在Template Method模式中,可以使用继承改变程序的行为。这是因为Template Method模式在父类中定义程序行为的框架,在子类中决定具体的处理。与此相对的是Strategy模式,它可以使用委托改变程序的行为。与Template Method模式中改变部分程序行为不同的是,Strategy模式用于替换整个算法。

  1. 使用Strategy模式和State模式都可以替换被委托对象,而且它们的类之间的关系也很相似。但是两种模式的目的不同。在Strategy模式中,ConcreteStrategy 角色是表示算法的类。在Strategy模式中,可以替换被委托对象的类。当然如果没有必要,也可以不替换。而在State模式中,ConcreteState角色是表示“状态”的类。在State模式中,每次状态变化时,被委托对象的类都必定会被替换。

  1. Factory Method模式是将Template Method模式用于生成实例的一个典型例子。

  1. Adapter模式适配了两种具有不同接口(API)的对象,以使它们可以一同工作。而在Proxy模式中,Proxy角色与RealSubject角色的接口(API)是相同的(透明性)。

  1. Decorator模式与Proxy模式在实现上很相似,不过它们的使用目的不同。Decorator模式的目的在于增加新的功能。而在Proxy模式中,与增加新功能相比,它更注重通过设置代理人的方式来减轻本人的工作负担。

  1. Abstract Factory模式通过调用抽象产品的接口来组装抽象产品,生成具有复杂结构的实例。Builder模式则是分阶段地制作复杂实例。

  1. 在 Builder模式中,Director角色控制 Builder角色。在Template Method模式中,父类控制子类。这里的“控制”指的是方法的调用顺序的控制。在Builder模式中,Director 决定了Builder角色中方法的调用顺序,而在Template Method模式中,父类决定了子类方法的调用顺序。

  1. Builder模式和Abstract Factory模式都用于生成复杂的实例。

  1. Decorator模式可以在不改变被装饰物的接口(API)的前提下,为被装饰物添加边框(透明性)。Adapter模式用于适配两个不同的接口(API )。

  1. Decorator模式可以像改变被装饰物的边框或是为被装饰物添加多重边框那样,来增加类的功能。Stragety模式通过整体地替换算法来改变类的功能。

2.2 互相使用

  1. 在Bridge模式中,为了能够根据需求设计出良好的ConcreteImplementor角色,有时我们会使用AbstractFactory模式。

  1. 有时,在 Iterator模式中使用iterator方法生成Iterator的实例时会使用Factory Method模式。

  1. 有时,Abstract Factory模式中零件和产品的生成会使用到Factory Method模式。

  1. 有时,在iterator方法中生成Iterator的实例时可能会使用Factory Method模式。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/124938.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!