2011-11-07 43 views

回答

7

都没有。

Shopping(如果你说它的主系统,例如购物车)应该有一个实现/继承PaymentProcessor的提供者列表。 VisaPayPal将实现/从PaymentProcessor继承。

这样你可以通过一些配置注入什么PaymentProcessor s可用。如果您添加MasterCard,那么Shopping不会更改。

看一看single responsibility principle

+0

所以,当最好使用抽象和实现,你可以给我简短的例子 – Uffo

+1

它取决于 - 问问自己,是否会有任何共同的逻辑? –

+0

我不知道,因为我不了解如此优秀的设计模式,所以我不得不对此进行更深入的研究。但对于我来说,是一种常见的逻辑,即万事达卡,Visa卡等......成为一种接口,因为我可以当我需要他们时执行它们..例如PaymentProcessor。 – Uffo

1

没有,我会说。每种付费方式都有一个班级会更好。我会用一个抽象类Paying(或类似的)来实现所有支付方法使用的方面。然后,您可以为每种方法(并非真正必需)编写一个接口,并且每个方法的实际实现都可以扩展为Paying(并可能实现Visa)。

3

基于你的班级的名字,我猜你应该都不会使用。你应该看的模式称为构图。见http://en.wikipedia.org/wiki/Object_composition

总之,你的购物类“采用的是”付费处理器,是不是一个本身(即不是“是”的关系)

我会实现你的购物类是接受付款处理器当它被实例化或通过对象的set方法。

您可能还想了解design patterns,特别是四人帮。

相关问题