我有一種關於繼承的情況,我發現很難找到一個很好的面向對象設計。使用接口/繼承時出現重複代碼
基本上我有以下情況:
Webservice的是適用於所有WebServices的所有通用功能的抽象類。 然後,大多數網絡服務被分爲促銷網絡服務(檢索促銷數據)或能夠檢索有關人員的信息(PersonWebservice)。這些也是抽象的,因爲它們擁有對所有孩子都是真實的通用實現(在獲得數據後認爲額外的處理)。孩子只持有特定於該子Web服務的功能和實現。
到目前爲止這麼好......但是......我有一個Web服務(Web服務E),這與整個設計混淆...因爲這個Web服務既是一個人的web服務,也是一個促銷web服務......只要我可以看到,在Webservice和Promo/Person webservices之間放置一個超類沒有真正的選擇。事實上,大多數Web服務都具有有限的功能,而Webservice E可以同時執行這兩種功能。
我曾考慮過使用接口,但接下來我將不得不在孩子中多次實現所有通用代碼,或者我必須擴展其中一個超類並複製另一個分支的通用代碼的一半,聽起來不像是一個不錯的設計給我...
有沒有人有什麼好的辦法可以解決這樣的設計/結構問題的任何提示或建議,同時避免儘可能多的重複代碼可能嗎?
非常感謝提前!
你是什麼意思「他們之間的超類」?你可以把一個'上面'他們 – Stultuske
是的抱歉,這就是我的意思。如在WebService - >超類新 - > Promo/PersonWebservice中。但是,我發現難以看到Promo和Person webservice之間的任何「共享」屬性。他們更有能力做到其中一個或兩個。 –
這確實指向了一種代碼異味,https://en.wikipedia.org/wiki/Single_responsibility_principle,爲什麼Webservice E有多重責任,是否沒有辦法將它們分開? –