标签:class-design c
我的许多课程最终都需要转换函数.
> DataRow->对象转换器
> ViewModel<->模型转换器
我的问题是功能应该放在哪里?
选项1:在源类内部
public class Employee
{
public EmployeeViewModel ToViewModel() {}
}
var vm = myEmployee.ToViewModel()
选项2:在目标类别内
public class EmployeeViewModel
{
public static EmployeeViewMOdel FromModel() {}
}
var vm = EmployeeViewModel.FromModel(myEmployee);
选项3:在转换器内部
public class EmployeeModelViewModelConverter
{
public static EmployeeViewModel ConvertToViewModel(Employee) {}
}
var vm = new EmployeeModelViewModelConverter.ConvertToViewModel(myEmployee);
选项3似乎是最干净的方法,但要花费大量的转换器类,或者大量的静态函数或大量的初始化/ IOC注入.它也具有最丑陋的语法,或者您必须使用扩展名添加另一个类.
澄清:我不是在谈论ViewModel / Model类,而是任何需要将一个类转换为另一个类的内容.作为另一个示例,我有一个渲染系统,在该系统中,经常需要将对象转换为可渲染的基元.
解决方法:
我相信Single Responsibility Principle建议使用#3,这是它自己的转换器类.
编辑:如果您需要在单独的方法中,那么我会坚持我上面所说的.但是@kyoryu关于ViewModel有一个有效的观点,但是,我只同意将Model作为ViewModel构造函数中的参数而不是作为单独的方法来传递.
标签:class-design,c 来源: https://codeday.me/bug/20191023/1916462.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。