【发布时间】:2016-09-09 21:24:19
【问题描述】:
抽象视图:我想将信息从一层传递到另一层(注意:如果该线程有更好的标题,请告诉我)。
我有一个 ViewModel,它与我的视图和我的服务层通信。 而且我与我的持久层有一个服务层通信。
假设我有以下课程:
public class EmployeeViewModel()
{
// The following properties are binded to my View (bidirectional communication)
public Firstname ...
public Lastname ...
public Email ...
public void PerformingSearch()
{
...
EmployeeService.Search(...);
...
}
}
public class EmployeeService()
{
public List<Employee> Search(...)
{
// Searching in db
}
}
将数据从我的 ViewModel 移交给我的服务层(例如,用于执行搜索)的最佳做法是什么?
我看到了一些选项(ViewModel 视角):
- EmployeeService.Search(Firstname, Lastname, Email);
- EmployeeService.Search(employeeSearchModel); // 在这种情况下,我需要另一个模型。模型应该如何实例化?
- EmployeeService.Search(this); // 转换必须在某个地方完成
这个问题有什么设计模式吗?怎么称呼?什么选择是最好的?我错过了什么吗?
【问题讨论】:
-
您的视图模型是否包含用例所需的业务逻辑?我假设您没有其他(域/持久性)模型以保持您的架构简单......?问这个是因为目前我们没有关于您的架构的详细概述,而且对我来说,很难向您推荐一个简洁的答案。
-
ViewModel 不应包含业务逻辑。业务逻辑放置在服务层内。服务层和数据库之间是我的数据访问层。到目前为止,我主要使用模型将数据从/向数据库转换。