1

我有一个Employee对象,它聚合了一些其他对象,例如HRDataAssignmentHistory。过去,所有这些逻辑都直接包含在Employee对象中,但为了可测试性和可管理性,我将其拆分为使用聚合。但是,我没有直接公开聚合对象,而是使用了委托,这样客户就不会意识到内部工作。例如,不要这样做:

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

客户会这样做:

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

我真的很喜欢这个,因为它遵循“黑盒”方法,这意味着我可以随意更改实现而不影响客户端,同时仍然由内部可测试的小对象组成。问题是Employee对象已经显着增长,因为它现在有 5 个聚合对象,并且它的接口上充斥着getXXXOn()方法。

您使用哪种方法,为什么?有没有我忽略的替代方案?使用委托方法的问题是接口变得庞大,而暴露聚合对象的问题是代码不太灵活,并且客户端需要知道哪个聚合负责什么。有什么建议么?

4

1 回答 1

0

考虑更改 Employee 以提供 GetEmployeeDataOn(Date) 方法,以及用于 EmployeeDataOnDate 的类,该类存储此日期并具有 GetProfile() 等方法。

于 2011-02-13T15:28:13.643 回答