Newtank

个人站

欢迎来到我的个人站~


设计模式(一)

目录

策略模式

策略模式定义一个算法族,让算法的具体实现和调用者解耦。

应用

策略模式应用于以下的场合

  • 许多类只有行为上的差别,通过策略来实现行为配置和复用
  • 某个算法需要多个复杂度不同的实现

  • 数据职责需要封装的情况
  • 需要if-else来选择行为的情况

优点

  • 可以借助继承来提取算法公共部分
  • 替代子类型
  • 消除条件判断

缺点

  • 需要选择实现方式
  • 调用者需要了解具体的策略
  • 调用者和策略的调用开销
  • 增加更多的类

简单工厂模式

可根据参数的不同返回类的不同实例。

优点

  • 无需知道具体类的类名,只需要对应的参数
  • 可以引入配置文件,在不修改客户端代码的情况下调整具体产品类

缺点

  • 增加类的数量
  • 每次添加新产品都要修改工厂,增大工厂的复杂性
  • 工厂无法形成继承结构

工厂方法模式

核心的工厂类不再负责所有产品创建,由子类进行具体的创建工作。

应用

如日志记录器。

  • 一个类不知道它所需要的对象的类
  • 一个类通过其子类来知道创建哪个对象2
  • 将创建对象的任务委托给多个工厂子类中的某一个

优点

  • 用户不需要知道产品类名,只需要关系工厂
  • 工厂可以自主确定如何创建何种产品对象
  • 加入新产品时,只需添加具体工厂和具体产品

缺点

  • 添加新产品时,需要成对添加具体产品和具体工厂,增加复杂度
  • 增加抽象性和理解难度