抽象工厂模式

来源:互联网 发布:方维直播源码 下载 编辑:程序博客网 时间:2024/06/14 23:14

什么是抽象工厂

关于这个问题,我们可以采用设计模式那本书里面对设计模式的一些规定来介绍。

  1. 意图
    提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
  2. 别名
    Kit
  3. 动机
    解决类似于软件的不同视图风格的问题。

这是设计模式书给出的关于抽象工厂的介绍。在对其意图的描述当中,涉及到一系列相关或相互依赖对象。这里应该怎样理解这里所说的相关或相互依赖呢?

首先应当明确的是,这些对象一定不属于同一个类型(type),如果需要产生一系列同一类型的对象,那么可以使用工厂模式来产生。(这里使用的是类型,类和类型的区别,一个简要的解释就是:class is a type,type describe objects, references and functions.)这也是抽象工厂模式和工厂模式的最大不同,抽象工厂产生的一系列对象属于不同的类型,而工厂模式产生的对象都属于同一个类型。

既然已经明确了他们之间肯定是不同类型的对象,现在我们就应该着眼于相关或相互依赖。这也说明了抽象工厂产生的对象一定是有相互关系的,不能是毫无关系的一系列对象。我对于这部分的理解是,这里的相关和相互依赖应该是软件设计层面上的相关或相互依赖,而不是单纯的代码上面的相关。代码层面可以相去甚远,就比如我们在设计软件的时候,可以把相关的元素设计成同一个系列的,但是他们的表现形式可以有很大的不同。
举个简单的例子,在文档编辑器里面图片、文字和音频等可以看成是同一个系列的对象,可以使用一个抽象工厂来生成。

抽象工厂的优点

最主要的优点就是可以在类的内部对产品族进行约束。所谓的产品族,一般或多或少的都存在一定的关联,抽象工厂模式就可以在类内部对产品族的关联关系进行定义和描述,而不必专门引入一个新的类来进行管理。

设计模式的主要作用是降低程序的耦合度,增加各部分的可复用性。我们一定要着眼于这个目标,而不是滥用设计模式。因为设计模式一般都会降低程序的运行效率,所以在确定能给程序带来好的时候才使用相应的设计模式。

0 0
原创粉丝点击