抽象工厂模式(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++)的主要内容,如果未能解决你的问题,请参考以下文章