设计模式学习-每日一记(4.抽象工厂)
2011-10-26 11:58
225 查看
抽象工厂模式
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)和工厂方法模式有什么不同?适用什么情况?
工厂方法模式创建了一个对象,而抽象工厂提供了创建多个对象的接口.
适用于创建一类产品这样的情况.
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)和工厂方法模式有什么不同?适用什么情况?
工厂方法模式创建了一个对象,而抽象工厂提供了创建多个对象的接口.
适用于创建一类产品这样的情况.
相关文章推荐
- 设计模式学习-每日一记(1.简单工厂模式)
- 设计模式学习-每日一记(3.工厂方法)
- 设计模式学习-每日一记(11.代理模式)
- 设计模式学习笔记(4)抽象工厂
- “设计模式”学习之一:工厂方法与抽象工厂
- 设计模式学习-每日一记(12.轻量模式)
- 设计模式学习(四)抽象工厂
- 设计模式学习-每日一记(22.访问者模式)
- 设计模式学习之简单工厂、工厂方法、抽象工厂
- 设计模式学习-每日一记(5.创建者模式)
- 设计模式学习-每日一记(7.适配器模式)
- 设计模式学习-每日一记(19.备忘录模式)
- 学习笔记之设计模式:抽象工厂
- 设计模式学习-每日一记(6.原型模式)
- 设计模式学习之抽象工厂
- 跟着实例学习设计模式(5)-工厂方法 、抽象工厂的区别
- 设计模式学习-每日一记(8.桥接模式)
- 设计模式学习-每日一记(23.责任链模式)
- 设计模式学习笔记:抽象工厂和工厂方法的区别
- 设计模式学习-每日一记(17.解释器模式)