我目前正在嘗試使設計決定我是否應該多次實現一個方法,或者如果我應該將接口添加到沒有其他共同點的對象。代碼複製與添加多個接口
我的方案的結構是這樣的:
BaseObject(名稱,描述,...)< - DocumentedObject(協議,手冊,...)< - RealObject(期滿,位置,...)
這些是抽象類。每個人都有幾個孩子,例如:
BaseObject:
- 客戶
- 出貨
DocumentedObject:
- MyDocumentedObject
RealObject:
- 產品
此列表只是一個例子,在現實中,我們都在談論〜20個教學班。
應用程序本身的體系結構是服務層(ProductService,CustomerService,...)之上的MVVM(ProductViewModel,CustomerViewModel,...)。層次結構運作良好,因爲這些對象共享許多屬性。但除了屬性一些共享集合,但他們不符合層次結構。例如。客戶和產品具有文檔列表,但MyDocumentedObject不具有。
我看到用於管理這些集合三個選項:(?在視圖模型,在服務上都)
- 在具有文檔類使用的接口「IHasDocuments」。該接口只包含一個集合文件
- 實現文檔管理方法的每個對象額外
- 實現一個文檔管理方法和檢查對象有哪些類型的傳遞(我想這是最糟糕的解決方案)
目前,它看起來像這樣:
BaseObject:
- 客戶:IHasDocuments
- 出貨
DocumentedObject:
- MyDocumentedObject:IHasItems
RealObject:
- 產品:IHasDocuments,IHasItems
現在想象這與20個類和5個接口(有5個重複收藏)。這是好的,還是我可以解決這個問題?
我猜的代碼審查的東西。 – 2014-10-06 09:28:16
取決於訪問此界面的代碼是做什麼的。 IComparable並非來自對對象結構的分析,而是從對這些對象進行操作的算法/代碼所需要的內容進行分析。 – AaronLS 2014-10-06 15:09:24
這個問題似乎是題外話題,因爲它是關於代碼審查,應該移到那裏或程序員 – 2014-10-06 15:09:39