2010-01-28 102 views
1

我正在构建一个软件产品,客户将能够将其系统配置为使用3或4个预集成支付网关供应商中的任何一个。 (例如:PayPal,Authorize.net等)。多供应商/供应商的典型模式?

客户将登录到应用程序,导航到设置,选择他们有哪个供应商的帐户,输入相关帐户信息并保存。然后,处理的付款交易将经过该特定的支付网关供应商API。

我正在寻找一种模式,用于从付款的实际功能中抽象出来。也就是说,当用户进行支付时,支付对象被实例化,然后调用Payment-> validate(),然后调用Payment-> save()。我希望这个支付类能够抽象出将在后端使用哪个特定供应商的细节。

所以这个支付类将需要能够确定配置的支付网关供应商(完成,不要求帮助),然后实例化该特定支付网关类的对象,并调用相关方法。

所以我问的是,这种类型的东西有什么典型的设计模式,它叫什么,你有链接到这个好材料。我不是在寻找“帮我写这段代码”类型的信息,我正在寻找“教一个人钓鱼”类型的信息:-)

谢谢。

回答

1

我会使用GoF书中的策略模式。而不是Payment-> save(),您可以编写一个AbstractPaymentService来提供验证(付款)和保存(付款)。对于每个支付服务类型,然后实现AbstractPaymentService(例如PaypalPaymentService)。

+0

谢谢bertolami。什么是GoF书的全名? – 2010-01-28 14:54:59

+0

我想我回答了我自己的问题:“四人帮”一书“设计模式:可重用的面向对象软件的元素”。 – 2010-01-28 15:11:20