我想知道,如果我有一个购物(如cart..payment处理)类,我想补充的可能性通过paypal..is要更好地使用abstract classDocs或interfaceDocs,如:在这种情况下使用接口还是抽象类更好?
Shopping implements Visa,Paypal
我想这接口是正确的答案,因为Shopping
类将被推荐为抽象类?
我想知道,如果我有一个购物(如cart..payment处理)类,我想补充的可能性通过paypal..is要更好地使用abstract classDocs或interfaceDocs,如:在这种情况下使用接口还是抽象类更好?
Shopping implements Visa,Paypal
我想这接口是正确的答案,因为Shopping
类将被推荐为抽象类?
都没有。
Shopping
(如果你说它的主系统,例如购物车)应该有一个实现/继承PaymentProcessor
的提供者列表。 Visa
和PayPal
将实现/从PaymentProcessor
继承。
这样你可以通过一些配置注入什么PaymentProcessor
s可用。如果您添加MasterCard
,那么Shopping
不会更改。
没有,我会说。每种付费方式都有一个班级会更好。我会用一个抽象类Paying
(或类似的)来实现所有支付方法使用的方面。然后,您可以为每种方法(并非真正必需)编写一个接口,并且每个方法的实际实现都可以扩展为Paying
(并可能实现Visa
)。
基于你的班级的名字,我猜你应该都不会使用。你应该看的模式称为构图。见http://en.wikipedia.org/wiki/Object_composition。
总之,你的购物类“采用的是”付费处理器,是不是一个本身(即不是“是”的关系)
我会实现你的购物类是接受付款处理器当它被实例化或通过对象的set方法。
您可能还想了解design patterns,特别是四人帮。
所以,当最好使用抽象和实现,你可以给我简短的例子 – Uffo
它取决于 - 问问自己,是否会有任何共同的逻辑? –
我不知道,因为我不了解如此优秀的设计模式,所以我不得不对此进行更深入的研究。但对于我来说,是一种常见的逻辑,即万事达卡,Visa卡等......成为一种接口,因为我可以当我需要他们时执行它们..例如PaymentProcessor。 – Uffo