2011-11-07 68 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,特別是四人幫。

相關問題