设计模式学习每日一记(4.抽象工厂)

抽象工厂模式

A.定义:

提供一个创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类.

B.定义分析:

"提供创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类."类似简单工厂和工厂方法,要定义一个类,提供接口,但是是多个.

"提供创建一系列相关或相互依赖的对象的接口,而无需指定他们具体的类."这个接口象简单工厂的接口一样,创建对象,但是有个约束:这些对象是相关的或者相互依赖的;

"提供创建一系列相关或相互依赖的对象的接口而无需指定他们具体的类."这句话的意思可能是:因为抽象工厂派生类已经约束了种类,这里无须指定.

C.问题

(1)什么样的对象可以成为相关的或者相互依赖的?

例如:windows界面中提供的Button类,Window类,List类等,这一系列是相关的;gtk界面中提供的Button类,Window类,List类,这一系列是相关的.

(2)抽象工厂具体可以是什么形式的?

抽象工厂类定义了创建对象的接口:

class AbstractFactory

{

    virtual AbstractButton createButton();

    virtual AbstractWindow createWindow();

    virtual AblstractList createList();

};

class WindowsFactory  : public AbstractFactory

{

AbstractButton createButton()

{

//创建windows系统上的Button组件

}

};

class GtkFactory  : public AbstractFactory

{

AbstractButton createButton()

{

//创建gtk系统上的Button组件

}

};

抽象工厂类提供了接口,具体子类来实现这些接口,这样的形式类似工厂方法定义接口子类实现的形式.

(2)和工厂方法模式有什么不同?适用什么情况?

工厂方法模式创建了一个对象,而抽象工厂提供了创建多个对象的接口.

适用于创建一类产品这样的情况.

作者:linucos

出处:http://linucos.cnblogs.com

声明因文章引起的任何问题,本博客不负任何责任;版权所有,欢迎转载 
原文地址:https://www.cnblogs.com/linucos/p/2225011.html