Delphi之Factory Method(工厂模式)
2007-03-21 15:46
211 查看
工厂方法(Factory Method)模式,又称虚构造子(Virtual Constructor)模式或多态工厂模式。工厂模式定义创建对象的借口,并由派生类决定哪一个类来创建对象。也就是说,工厂方法将创建对象的责任委托给派生类。这是因为基类并不知道要创建的对象是哪一个类的实例,所以将创建对象的责任委托给派生类,或者将实际创建工作延迟到派生类中完成。
TCPU = class(TObject)
end;
TAMDCPU = class(TCPU)
end;
TIntelCPU = class(TCPU)
end;
TCPUFactory = class(TObject)
public
//将对象的创建转移到派生类
function CreateCPU: TCPU; virtual; abstract;
end;
TAMDCPUFactory = class(TCPUFactory)
public
function CreateCPU; TCPU; override;
end;
TIntelCPUFactory = class(TCPUFactory)
public
function CreateCPU: TCPU; override
end;
看一下具体的实现
function TAMDCPUFactory.CreateCPU: TCPU;
begin
Result := TAMDCPU.Create;
end;
再来看客户端,在未使用工厂方法前
TComputer = class(TObject)
private
FAMDCPU: TAMDCPU;
public
end;
FAMDCPU := TAMDCPU.Create;
使用工厂方法以后
TComputer = class(TObject)
private
FAMDCPU: TCPU;
AMDCPUFactory; TFactory;
public
end;
FAMDCPU := AMDCPUFactory.CreateCPU;
这个时候,TComputer类中的FAMDCPU声明为了一个TCPU而不是具体的CPU.
再来看参数化工厂
TCPUFactory = class(TObject)
public
function CreateCPU(CPUType: TCPUType): TCPU;
end;
function TCPUFactory.CreateCPU(CPUType: TCPUType): TCPU;
begin
case CPUType of
tpAMD: Result := TAMDCPU.Create;
tpIntel: Result := TIntelCPU.Create;
end;
end;
参数化工厂把不同对象的创建以一个统一的接口实现。
TCPU = class(TObject)
end;
TAMDCPU = class(TCPU)
end;
TIntelCPU = class(TCPU)
end;
TCPUFactory = class(TObject)
public
//将对象的创建转移到派生类
function CreateCPU: TCPU; virtual; abstract;
end;
TAMDCPUFactory = class(TCPUFactory)
public
function CreateCPU; TCPU; override;
end;
TIntelCPUFactory = class(TCPUFactory)
public
function CreateCPU: TCPU; override
end;
看一下具体的实现
function TAMDCPUFactory.CreateCPU: TCPU;
begin
Result := TAMDCPU.Create;
end;
再来看客户端,在未使用工厂方法前
TComputer = class(TObject)
private
FAMDCPU: TAMDCPU;
public
end;
FAMDCPU := TAMDCPU.Create;
使用工厂方法以后
TComputer = class(TObject)
private
FAMDCPU: TCPU;
AMDCPUFactory; TFactory;
public
end;
FAMDCPU := AMDCPUFactory.CreateCPU;
这个时候,TComputer类中的FAMDCPU声明为了一个TCPU而不是具体的CPU.
再来看参数化工厂
TCPUFactory = class(TObject)
public
function CreateCPU(CPUType: TCPUType): TCPU;
end;
function TCPUFactory.CreateCPU(CPUType: TCPUType): TCPU;
begin
case CPUType of
tpAMD: Result := TAMDCPU.Create;
tpIntel: Result := TIntelCPU.Create;
end;
end;
参数化工厂把不同对象的创建以一个统一的接口实现。
相关文章推荐
- 工厂方法(Factory Method)模式
- 对数据库数据操作,工厂方法设计模式(Factory Method)
- 我的设计模式-工厂(Factory Method)
- PHP设计模式之工厂模式(FactoryMethod)
- java设计模式之创建型模式-FactoryMethod ( 工厂方法 )
- 设计模式-工厂方法(Factory Method)
- 设计模式学习笔记:factory method(工厂方法)
- 设计模式之 Factory Method 工厂方法
- 《GOF设计模式》—工厂方法(Factory Method)—Delphi源码示例:平行的类层级架构
- 工厂方法(Factory Method)模式
- 跟着Android学设计模式:工厂方法(Factory method)
- 《设计模式精解》学习笔记(十五)------FactoryMethod(工厂方法)模式
- Php设计模式之工厂模式(二)【工厂方法模式 Factory Method】
- Factory Method 工厂方法(创建模式) 笔记
- c#设计模式- Factory Method模式(工厂方法)
- 设计模式(一)----- 工厂方法(FactoryMethod)----(JAVA版)
- Java设计模式-工厂方法(Factory Method)模式
- 设计模式--工厂方法(FactoryMethod)
- 《GOF设计模式》—工厂方法(Factory Method)—Delphi源码示例:基于工厂方法的迷宫
- 设计模式------工厂方法(Factory Method)