码迷,mamicode.com
首页 > 其他好文 > 详细

论Model(模型层)的过度封装

时间:2015-07-25 18:03:16      阅读:202      评论:0      收藏:0      [点我收藏+]

标签:

曾经我架构的层次安排为

Entity(实体层),Repository(持久化层),DTO(搜索对象层)

Model(模型层),Service(服务层)

拦截层

(Control)控制层

 

Model模型层的依赖关系:Entity,Service

public class MArticleList

    {

      public List<Article> list { get; set; }

      public DArticle dto { get; set; }

      public MArticleList()

      {

          list = new List<Article>();

          dto = new DArticle();

      }

      public void Get()

      {

          list = SCommon.sArticle.GetList(dto);

      }

    }

理由是数据封装用Model,并使用其自身返回数据

Service用于CUD事务的逻辑处理和拼装

Model用于select的数据封装和显示

调用方法为:

MArticleList model=new MArticleList();

model.Get() 

但是这样做我认为Model有过度封装的嫌疑

Model作为模型,是有必要和Service交互

比如:一个编辑或增加的界面,只需要一个Entity中的几个字段,一般我们会建一个MArticleEdit的Model,可是如果Model引用Service的话,Service就不能引用Model形成循环依赖.

所以我认为

Model不能有显示数据的能力,只能定义数据和对数据和实体的转换功能

而Service需要对Model进行数据封装和逻辑处理

如下

public class MArticleEdit

{

    public string Name{get;set;}

    public string Content{get;set;}

    public static MArticleEdit ConvertArticleToMArticleEdit(Article entity)

    {

            MArticleEdit  model=new MArticleEdit ();

            xxxxxxxx

            return model;

    }

}

 

论Model(模型层)的过度封装

标签:

原文地址:http://www.cnblogs.com/alisande/p/4676131.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!