簡體   English   中英

通過接口公開聚合與委托

[英]Exposing aggregation through the interface vs. delegation

object which aggregates a few other objects, such as and . 我有一個對象,它聚合了其他一些對象,例如 object, but for testability and manageability I've split it to use aggregation. 過去,所有這些邏輯都直接包含在對象中,但是為了可測試性和可管理性,我將其拆分為使用聚合。 但是,我沒有直接公開聚合對象,而是使用了委派,以便使客戶端不了解內部工作。 例如,不要這樣做:

employee.getHRDataOn("2010-01-01").getProfile();

客戶可以這樣做:

employee.getProfileOn("2010-01-01");

我真的很喜歡它,因為它遵循“黑匣子”方法,這意味着我可以在不影響客戶端的情況下隨意更改實現,同時仍然由內部小的可測試對象組成。 object has grown considerably, as it now has 5 aggregate objects, and it's interface is littered with methods. 問題在於對象已經有了相當大的增長,因為它現在有5個聚合對象,並且其接口上方法。

您使用哪種方法,為什么? 我有沒有其他選擇? 我使用委托方法的問題是接口變得龐大,而暴露聚合對象的問題是代碼的靈活性較差,客戶端需要知道哪個聚合負責什么。 有什么建議么?

考慮更改Employee以提供GetEmployeeDataOn(Date)方法,以及用於EmployeeDataOnDate的類,該類存儲該日期並具有類似GetProfile()的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM