几种设计模式的使用场景

发布于: 2020 年 06 月 23 日

本周系统的学习了几种设计模式以及它们的使用场景:

工厂模式

适用场景:

  • 为了实现解耦,将对象的创建和使用分开。

  • 降低代码重复。

  • 工厂模式将创建和使用分离,使用者不需要知道具体的创建过程,只需要使用即可。

单例模式

适用场景:

  • 全局唯一实例,减少对象创建和销毁带来的开销。

  • 当多个用户使用这个实例的时候,方便进行统一控制。

适配器模式

适用场景:系统需要现有的类,而这个类的接口与我们的所需要的不同。

模板方法模式

适用场景:

  • 将一个大方法打破,变成多个可扩展的步骤。

  • 将if/else或switch语句换成多态性。

存在的问题:

  • 将抽象算法和具体步骤耦合在一起,不能独立演化。

  • 造成类的数量很多、类的层次很深,例如:Spring的测试工具类。

策略模式

适用场景:系统需要在多种算法中选择一种

对比模板方法模式的优点:

  • 将使用策略的人与策略的具体实现分离

  • 策略对象可以自由组合

存在的问题:

策略模式仅仅封装了“算法的具体实现”,方便添加和替换算法。但它并不关心何时会用何种算法,这个必须由客户端来决定。

组合模式

是一种“对象的结构模式”。

装饰器模式

适用场景:

  • 在不改变对客户端接口的前提下对客户端透明

  • 扩展现有对象的功能

与模板方法,策略模式的比较:

1)装饰器保持原有对象的功能不变,扩展其外围功能。

2)模板方法和策略模式保持算法框架不变,而扩展其内部实现。

与继承比较:

1)都可以用例扩展对象的功能。

2)装饰器是动态的,继承是静态的。

3)装饰器可以任何组合,有可能组合出荒谬的结果。

用户头像

Acker飏

关注

还未添加个人签名 2018.05.03 加入

还未添加个人简介

评论

发布
暂无评论
几种设计模式的使用场景