极简设计模式(1)-工厂三兄弟

在我们刚开始学习设计模式的的时候,一个比较让人头疼的问题在于,我们没有办法理解为什么要用,其实原因很简单,我们学习的时候,看到的需求和代码是固定的,他们没有告诉你如果代码要变动,会怎么变,而设计模式是面向变化的,因此我希望用一篇文章,去回顾每一个设计模式,同时指出来,它应对的是什么样的变化,希望能够帮助大家理解设计模式本身。

一. 简单工厂模式

  • 一句话描述:简单工厂模式,就是通过封装对象的创建过程(包括什么对象被创建和怎么被创建),使得使用者不需要关心对象的构建,只需要专注于消费对象
  • 使用场景:
    1.构建过程复杂且多变的对象,用工厂模式来封装构建细节
    2.希望对构建过程有更强的掌控力的情景(比方说插入逻辑或者改用对象池等)
    3.构建的对象类型是可变的,就好像是水果下面可以增加新的种类等
  • 应对的变化:构建过程的变化,构建对象的变化
  • 缺陷:每次新增产品的时候,工厂类一定要修改相应的代码,没有完全符合”开闭“原则

二.工厂模式

  • 一句话描述:工厂模式是将工厂抽象化,从而允许通过实现抽象工厂接口来赋予新的对象构建能力的模式
  • 使用场景:
    1.产品具有层级概念,产品的种类繁杂,不同层级的产品构建细节不同
    2.产品是易变
  • 应对的变化:构建过程的变化,构建对象的变化

抽象工厂模式

  • 一句话描述:抽象工厂模式中,允许工厂生产多种抽象产品(而工厂模式中只允许一种),称之为产品族
  • 使用场景:
    1.对于所有的使用场景,都有两种及以上的实现方法,且方法之间是互相绑定的(比方说特定数据库,有增删改查四种产品)
  • 应对的变化:特定种类的产品的变化

总结工厂三兄弟

工厂三兄弟的核心目标是封装创建过程,他们之间的差异在于面向创建对象的差异,其中工厂模式是为了解决简单工厂中的开闭问题,而抽象工厂模式是为了解决面对的不是单一产品,而是多类别产品的问题

你可能感兴趣的:(极简设计模式(1)-工厂三兄弟)