zoukankan      html  css  js  c++  java
  • 谈O/R Mapping设计中实体类和操作类的分离

    首先解释什么叫“实体类和操作类的分离”?
    实体,我原先称载体,我觉得这样更加贴切一些,顾名思义是承载数据的对象,我们看见的DataSet就是这个冬冬;
    操作类,专业称呼好像叫什么“领域模型”什么的(我是土包子一个,不懂那么多专业术语),就是对实际数据库的操作,最常见的就是CRUD操作了。

        那么不分离的设计是什么样的呢?ADO(COM时代的ADO)就是不分离的设计,他重要的对象Recordset就包含了AddNew,Update等对数据库的操作,又包含了Fields集合用来检索记录中的数据,其实这种设计还包括Java中的EJB以及XPO ;
        分离的对象设计最经典的就是ADO.NET,DataSet是实体,用来承载数据,他不负责任何的对数据库的操作,而具体的操作分配给Command。PDO、Grove.NET 、ObjectSpaces都是这样的设计思想。

    为什么分离?
    1、MS在解释ADO的“升级”目的时,就说了是为了更好的做分布式开发,因为分布式开发需要将实体传输到客户端,而如果实体包含了Save之类的方法,那将是多么糟糕的设计(虽然实际上是不能Save的);
    2、实体的独立,这可以使职能更加清晰,这样可以方便的实现剪贴板、序列化、回收站等等功能,因为我不再关心实体是否一定是存在数据库中,可以是文件、序列化后的一个字段或者一个流中。
    3、说一个赖皮的理由:不分离的设计都是早期的设计,后设计的都是分离的。
  • 相关阅读:
    地理大发现
    克里斯托弗·哥伦布
    2016. last day in office
    泰斯花粉阻隔剂 怎么使用
    ZT 螨虫知识2
    ZT 螨虫的话就不要跟狗多接触,狗的寄生虫很多,还有草地,
    expense KK [ɪkˋspɛns] DJ [iksˋpens]
    Windows 实战项目 001 文件扫描器 (01)
    017 系统内存信息 内存大小 空闲内存 5
    017 虚拟内存页面区块 4
  • 原文地址:https://www.cnblogs.com/tansm/p/185947.html
Copyright © 2011-2022 走看看