• 谈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、说一个赖皮的理由:不分离的设计都是早期的设计,后设计的都是分离的。
  • 相关阅读:
    如何在一台主机上管理自己的多个git repository
    Linux deepin 中Jetbrain Idea等软件中文显示异常
    使用openmp进行并行编程
    使用pthread进行编程
    使用openmp进行共享内存编程
    并行与分布式计算之并行硬件与并行软件
    算法笔记刷题5(PAT A1025)
    算法笔记刷题4(PAT B1009)
    算法笔记刷题3(codeup 5901)
    算法笔记刷题2(codeup 1928)
  • 原文地址:https://www.cnblogs.com/tansm/p/185947.html
Copyright © 2020-2023  润新知