设计模式一日一练:抽象工厂模式(Abstract Factory)
2014-04-20 01:18
344 查看
Abstract Factory模式,提供一个创建一系列相关或相互依赖对象的接口,而无须指定他们具体的类。
Abstract Factory模式与Factory模式的区别是:Factory模式有一个抽象产品类,Abstract Factory模式有多个;Factory模式的具体工厂类创建一个具体产品,而Abstract Factory模式的具体工厂类可以创建多个。Abstract Factory模式相对于Factory模式,最大的优点是易于切换产品系列。比如,对于下面的代码示例,如果想从罗技设备切换为微软设备,只需要修改具体工厂为MicrosoftDevicesFactory,如果DevicesFactory生产很多种设备,方便显而易见。
PS. 我的设计模式系列blog,《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。
Abstract Factory模式与Factory模式的区别是:Factory模式有一个抽象产品类,Abstract Factory模式有多个;Factory模式的具体工厂类创建一个具体产品,而Abstract Factory模式的具体工厂类可以创建多个。Abstract Factory模式相对于Factory模式,最大的优点是易于切换产品系列。比如,对于下面的代码示例,如果想从罗技设备切换为微软设备,只需要修改具体工厂为MicrosoftDevicesFactory,如果DevicesFactory生产很多种设备,方便显而易见。
// product class Mouse { public: virtual void Input(); } class MicrosoftMouse : public Mouse { public: void Input(); } class LogitechMouse : public Mouse { public: void Input(); } class Keyboard { public: virtual void Input(); } class MicrosoftKeyboard : public Keyboard { public: void Input(); } class LogitechKeyboard : public Keyboard { public: void Input(); } // factory class DevicesFactory { public: virtual Mouse* CreateMouse(); virtual Keyboard* CreateKeyboard(); }; class MicrosoftDevicesFactory { public: virtual MicrosoftMouse* CreateMouse(); virtual MicrosoftKeyboard* CreateKeyboard(); }; class LogitechDevicesFactory { public: virtual LogitechMouse* CreateMouse(); virtual LogitechKeyboard* CreateKeyboard(); }; // test void Test() { DevicesFactory* logitechFactory = new LogitechDevicesFactory(); Keyboard* keyboard = logitechFactory->CreateKeyboard(); keyboard->Input(); }
PS. 我的设计模式系列blog,《设计模式》专栏,通过简单的示例演示设计模式,对于初学者很容易理解入门。深入学习请看GoF的《设计模式》。
相关文章推荐
- 设计模式(JAVA)------抽象工厂模式
- 设计模式(五)抽象工厂模式详解
- 设计模式(一): abstract factory抽象工厂模式 -- 创建型模式
- 设计模式(创建型)之抽象工厂模式(Abstract Factory Pattern)
- 设计模式-抽象工厂模式
- 《设计模式》-- 抽象工厂模式
- 设计模式初学者系列-开篇以及抽象工厂模式
- 设计模式(Design Patterns)--抽象工厂模式(Abstract Factory)
- 设计模式C++学习笔记之七(AbstractFactory抽象工厂模式)
- 设计模式(三) : 创建型模式--抽象工厂模式
- 设计模式(二)之Abstract Factory - 抽象工厂模式
- 设计模式(Design Pattern) - 创建型模式(Creational Pattern) - 抽象工厂模式(Abstract Factory) - Java实现
- 《设计模式》-抽象工厂模式
- 设计模式系列之三:抽象工厂模式
- 设计模式(五)——抽象工厂模式
- 设计模式系列(11)抽象工厂模式
- 设计模式-抽象工厂模式-abstractfactory-python
- 设计模式-工厂模式 抽象工厂模式 简单工厂模式学习笔记
- 设计模式抽象工厂模式(AbstractFactoryPattern)
- 设计模式(四):从“兵工厂”中探索简单工厂、工厂方法和抽象工厂模式