简单工厂模式和抽象工厂模式,设计模式深入浅出之工厂模式

首页 > 科技 > 作者:YD1662024-07-04 05:32:48

前面的22个常用的设计模式现已学习完毕,大家可以看到22个设计模式中提及到了带有“工厂”性质的相关模式,例如:构建方法、静态构建(或工厂)方法、工厂方法、抽象工厂、简单工厂等。类似这些模式,我们拿出来将其概念跟他们之间的区别进行比较跟说明。

简单工厂模式和抽象工厂模式,设计模式深入浅出之工厂模式(1)

抽象工厂模式是一种创建型模式,它能创建一系列相关或相互依赖的的对象而无需指定其具体类。那么有人要问,什么是“系列对象”?那接下来我将用生活中具体的示例来解释清楚这种概念。

例如有这样的一组对象:运输工具-引擎-控制器

  1. 汽车 涡轮发动机 方向盘
  2. 飞机 喷气式发动机 操纵杆

注:如程序中不涉及具体产品系列的话,那就不需要使用抽象工厂。

工厂方法模式是一种创建型模式,其在父类中提供创建对象的方法,允许子类实例化对象的类型。

如果在基类及其扩展类中都有一个构件方法的话,他可能就是工厂方法模式。

简单工厂模式描述了一个类,他包含了拥有大量条件语句的构建方法,可工具方法的额参数来选择对哪种产品进行初始化将其返回。

人们通常将简单工厂与普通的工厂或其他创建型设计模式混淆。在绝大多数情况下,简单工厂是引入工厂方法或抽象工厂模式时的一个中间步骤。

简单工厂通常没有子类。但当从一个简单的工厂中抽取出子类后,他看上去就会更像经典的工厂方法模式了。

注:如果你讲简单工厂声明为abstract类型,他并不会变为抽象工厂模式。

静态构建方法是被声明为static的构建方法。意思就是你无需创建对象就能在某些类上调用该方法。

不要因为某些人将这些方法称为“静态工厂方法”而被迷惑,这种称呼并不好,工厂方法是一种依赖于继承的设计模式。如果将他设置为static,你就不能在子类中对其进行扩展,这就破坏了该模式的目的。

当静态构建方法返回一个新对象时候,它就成为构造函数的替代品。

构建方法被定义为“创建对象的方法”。这意味着每个工厂方法模式的结果都是“构建方法”,但反过来则并非如此。这意味着你可以用“构建方法”来代替在重构中使用的“工厂方法”和“静态工厂方法”。

在实际中,构建方法只是构造函数调用的封装器。它可能只是一个能更好地表达意图的名称。此外,它可以让你的代码独立于构造函数的改动,甚至还可以包含一些特殊的逻辑。返回已有对象以而不是创建新对象。

许多人会仅仅因为这些方法创建了新对象而称之为“工厂方法”。其中的逻辑很好理解:所有的工程都会创建对象,而该方法会创建对象。所以显然它是一个工厂方法。但是当你正在遇到真正工厂方法时候,这将造成许多混淆跟迷惑。

栏目热文

文档排行

本站推荐

Copyright © 2018 - 2021 www.yd166.com., All Rights Reserved.