API是否有任何模式';s,需要返回完整或部分对象图
本文关键字:返回 对象图 任何 是否 模式 API | 更新日期: 2023-09-27 18:20:59
是否有任何模式/解决方案可以解决API调用的问题,在一种情况下,该调用可能需要返回完整的对象图(比如manager
对象及其所有员工关系),而在另一种情况中,可能只返回单个manager
对象?
我们目前传递的想法是:
- 多种方法
在上面的例子中,有一个方法叫get_manager()
,另一个叫get_manager_deep()
- 许多对象
类似于1。有两个方法,一个返回manager
,一个则返回manager_with_staff
- 数据驱动的API
在这里,该方法接受某种查询(可能是XML),该查询准确地定义了您想要返回的对象类型,并且该方法可能返回与查询匹配的动态对象
注:。这些示例非常简单,实际上,这些方法可能需要指定部分数据的来源——ActiveDirectory/DB。
有人遇到过这样的问题吗?
编辑-设计的主要驱动力是拥有一个干净、简单(但有效)的API和对象模型。因此,上面的一些示例会导致潜在的大型(并且可能令人困惑)对象图。拥有太多(希望是不必要的)方法/类可能是一个维护问题。
在我参与的一个没有使用任何真正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.方法链接2.递归
维基百科上一篇关于方法链接的好文章http://en.wikipedia.org/wiki/Method_chaining
谨致问候。