极简设计模式(2)-创建型模式拾遗

在上文中我们已经介绍完了工厂三兄弟,其实,他们隶属于一类设计模式->创建型模式,创建型模式是围绕着对象创建而成的,其原因在于部分对象的创建复杂而高成本。除了工厂三兄弟以外,创建型模式还包括建造者模式(builder),单例模式,原型模式。下面我们对这三种模式进行解析。

建造者模式

  • 一句话解释:建造者模式通过将构建逻辑(分配给Director)、构建细节(分配给Builder)和使用(客户端)分离来实现一个复杂对象的构建
  • 使用场景:
    1.对象的构建有特定的逻辑(比方说构建A要在构建B之前),此时可以由Director来全程控制构建逻辑
    2.当对象未完全构建成功就无意义的时候,比方说Email如果没有构建Sender什么的就无法成功,此时由Director可以保证构建的完整性
  • 应对的变化:相同构建逻辑的产品
  • 一些退化情景:
    1.Builder可能只有明确一个,此时省略AbstractBuilder
    2.如果Builder只有一个,可以将Director和Builder合并成一个,此时相当于构建逻辑不重用
    3.建造者和产品合并,其实就是说JAVA中的getter/setter模式

单例模式

  • 一句话解释:单例模式用于由于种种原因(资源等)需要确保该类仅有一个实例
  • 使用情景:
    1.就是要求类只有一个实例的情景,注意不要试图用单例模式来管理生命周期
  • 应对的变化:当单一对象引用是已知且不变时我们可以传参等方式来实现“唯一的效果”,但是如果发生了变化,那就是单例模式使用的地方

原型模式

  • 一句话解释:使用产品的本身信息来构造新的产品,在java中,clone就是天然的原型模式的支持
  • 使用场景:
    1.如果产品的结构会经常变化,那么工厂模式下的工厂也不得不对应变化,原型模式可以克服该困难
  • 弊端:要求实现clone,对于兼容第三方类库来说较难实现

你可能感兴趣的:(极简设计模式(2)-创建型模式拾遗)