我想知道,如果我有一個購物(如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