设计模式之工厂方法

工厂模式提供了创建对象的接口,并有子类决定具体初始化那个类。工厂模式将对象的初始化工作推迟到子类进行。

举例:Java的Collection Framework中就用到了工厂模式。Collection接口定义了创建产品Iterator的工厂方法iterator()。而子类AbstractList和AbstractSet则分别实现了这个工厂方法。

在我参与的一个项目中,需要开发一个批处理程序来处理与银行的对账文件。文件中每条记录代表一种交易类型(Charge,Refund,Chargeback等等).我们设计的批处理程序框架就是读入一个文件,然后逐条处理每个文件记录,最后更新文件处理状态。

在设计批处理框架的时候,我们不知道到底要支持多少中交易类型。为了保证批处理框架在出现新的交易类型的时候尽量不影响现有代码的功能,框架逻辑ReconcliationBatchApp只知道一个抽象的对账处理器(ReconciliationHandler)。而创建具体的ReconciliationHandler的工作交由ReconciliationHandlerFactory的工厂方法getReconciliationHandler来处理。

另外,在设计EscrowLedgerService时我们也用到工厂模式。EscrowLedgerService是Product,EscrowLedgerServiceFactory是工厂,EscrowLedgerServiceImp是具体产品。客户端利用工厂EscrowLedgerServiceFactory的方法getService来得到EscrowLedgerService实例。

原文地址:https://www.cnblogs.com/littlesuccess/p/2234478.html