这个设计模式是什么?

2024-02-16

我阅读了维基百科的文章工厂方法 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(使用前将#替换为@)

这个设计模式是什么? 的相关文章

随机推荐