我阅读了维基百科的文章工厂方法 http://en.wikipedia.org/wiki/Factory_method_pattern and 抽象工厂 http://en.wikipedia.org/wiki/Abstract_factory_pattern但下面的代码似乎不适合任何地方。有人可以向我解释以下模式是什么或者它是否是反模式?
interace PaymentGateway{
void makePayment();
}
class PaypalPaymentGateway implements PaymentGateway
{
public void makePayment()
{
//some implementation
}
}
class AuthorizeNetPaymentGateway implements PaymentGateway
{
public void makePayment()
{
//some implementation
}
}
class PaymentGatewayFactory{
PaymentGateway createPaymentGateway(int gatewayId)
{
if(gatewayId == 1)
return PaypalPaymentGateway();
else if(gatewayId == 2)
return AuthorizeNetPaymentGateway();
}
}
假设用户使用 html 页面上的单选按钮选择付款方式,并且 gatewayId 是从单选按钮值派生的。
我见过这样的代码,并认为它是抽象工厂模式,但在阅读维基百科文章后,我产生了怀疑。
网关类实现策略模式 http://en.wikipedia.org/wiki/Strategy_pattern将选择委托给我所说的参数化工厂。
如果你想把它简化为 GOF 模式之一,我会说它更像是建造者模式 http://en.wikipedia.org/wiki/Builder_pattern,压缩为一个速记调用,而不是设置策略并随后调用 build() 。
如果您想扩展到 Fowler 模式,您可以将其与Registry http://martinfowler.com/eaaCatalog/registry.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)