抽象工厂模式(C++)

Posted 顾文繁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了抽象工厂模式(C++)相关的知识,希望对你有一定的参考价值。

抽象工厂模式是常见的设计模式,他比工厂模式的抽象程度更高。在工厂方法模式中,具体工厂只需要生产一种具体产品,但是在抽象工厂模式中,具体工厂可以生产一组具体产品,这样的一组产品产品成为产品族,产品族中的每一个产品都分别属于某一个产品继承等级结构。

抽象工厂模式的包含的角色:

1 AbstractFactory(抽象工厂)

抽象工厂用于声明生成抽象产品的方法,在一个抽象工厂中可以定义一组方法,每一个方法对应一个产品等级结构。

2 ConcreteFactory(具体工厂)

具体工厂实现了抽象工厂声明的生成抽象产品的方法,生成一组具体产品,这些产品构成了一个产品族,每一个产品都位于某个产品等级结构中。

3 AbstractProduct(抽象产品)

抽象产品为每种产品声明接口,在抽象产品中定义了产品的抽象业务方法。

4 ConcreteProduct(具体产品) 

具体产品定义具体工厂生产的具体产品对象,实现抽象产品接口中定义的业务方法。 

类图

下面展示在不同操作系统创建出Text和Button组件。

在调用时,无需关注那个具体产品了,而是面向抽象编程。类如判断为该操作系统为LinuxFactory,则创建出的对象LinuxText和LinuxButton都属于Text和Button父类或者它的接口,这样将大大降低代码的重复度。

//伪码
AbstractFactory factory = new LinuxFactory;
Text text = factory.createText();
Button btn = factory.createButton();
text.show();
btn.click();

在修改创建另外一个产品族时,只需要修改具体工厂类或者配置文件信息。

 

以上是关于抽象工厂模式(C++)的主要内容,如果未能解决你的问题,请参考以下文章

设计模式 C++抽象工厂模式

设计模式 C++抽象工厂模式

C++设计模式:抽象工厂模式

C++设计模式:抽象工厂模式

C++设计模式:抽象工厂模式

C++设计模式:抽象工厂模式