是否有任何模式/解决方案可以解决API调用的问题,在一个场景中可能需要返回一个完整的对象图(比如一个manager
对象及其所有的员工关系)而在另一个场景中可能只是返回一个manager
对象?
我们目前传递的想法是:
get_manager()
的方法,另一个名为get_manager_deep()
。manager
,另一种返回manager_with_staff
NB。这些示例非常简单,实际上这些方法可能需要指定数据的部分来源 - ActiveDirectory / DB。
有人遇到过这样的问题吗?
编辑 - 设计的主要推动力是拥有干净简单(但有效)的API和对象模型。因此,上述一些示例会导致潜在的大型(并且可能令人困惑)对象图。拥有太多(希望是不必要的)方法/类可能是一个维护问题。
答案 0 :(得分:2)
在我工作的项目中没有使用任何真正的ORM,我们解决了这样的问题:
class Manager {
public List<Employee> Staff { get;set;} // Not populated by default.
}
interface IEmployeeDataAccess {
List<Staff> GetStaffForManagers(int[] managerIds);
}
然后创建可填充对象图的构建器类:
new ManagerBuilder().From(managers).WithEmployees(employeeDataAccess).Build();
建筑商可以链接在一起:
new ManagerBuilder()
.From(managers)
.WithEmployees(employeeDataAccess, employeeBuilder =>
employeeBuilder.WithLeaveRequests())
.Build();
允许我们尽可能少地访问数据库来获取所需的数据。
答案 1 :(得分:0)
你应该根据自己的需要尝试创建一个..你只需要两个概念.. 1.方法链接 2.递归
关于维基百科方法链的一篇非常好的文章 http://en.wikipedia.org/wiki/Method_chaining
问候。