Delphi之Factory Method(工厂模式)

工厂方法(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 ;

 

参数化工厂把不同对象的创建以一个统一的接口实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值