zoukankan      html  css  js  c++  java
  • 企业设计模式读书笔记 Domain Model

    Domain Model:
     

    特点:

    有一系列的实体对象,每个对象不只包含数据更重要的包含各自的行为责任。每个对象只做自己的事情,多个对象通过协作共同完成一件事情。可以充分发挥面向对象和模式的作用。 很符合面向对象的特性。

     

    优点:

    处理复杂多变的系统有很大优势,可以很好发挥(Gof)模式的作用。

     

    缺点:

    O/R mapping 是件比较麻烦的事。

     

    说明:

    有两种风格的Domain Model

    1.   每个对象对应于数据库中的表中一行。 Active Record模式

    2.   有很多的对象(由于使用继承和模式,比如一个接口,多个实现类) Data Mapper模式

     

    一系列的实体对象如何存储需要仔细考虑,一些简单的应用可以将他们从数据库中全部载入,如果对象很多,那么有时需要按需载入。如果是服务器上的对象那么还要考虑使用session进行管理。同时O/R mapping 也是一个要注意的问题。

     

    使用Domain Model很容易引起对象臃肿。比如为了让Contract对象可以在UI中被操作,那么就需要在Contract类中添加专门的函数,如此一般对象就容易变的很大。这时候可以考虑将一些通用的操作提到专门的类中,甚至提到其他层,比如UI层。但是如果提到其他地方,人们有时就会忽略它,以致再写一次,产生不必要的重复。Martin建议还是放在原来的类中,因为这种对象臃肿的现象往往比预期的少,就算发生也容易发现并修改。

     

    此处Martin还提到了EJB,个人不是太了解,总之他觉得EJB1.0不太好,建议使用POJOplain old java objects)就是常见的自定义的java对象。除非是那种小的对象系统,比如没怎么用到继承,模式的系统可以使用EJB中的Entity Bean

    他还提到Entity Bean不能re-entrant,这是它的主要缺陷。(谁来解释一下,我看的一知半解)而且CMPO/R mapping也是支持有限。不过他对EJB2.0好像评价不错,现在3.0都出来了,哪位高人介绍一下啊。

     

    涉及模式:

    简单类结构Active Record   复杂用到多态和模式的类结构DataMapper


    注:此处仅为个人的简单理解,欢迎指教。

  • 相关阅读:
    H50068:html页面清除缓存
    CSS0019: 样式中高度百分比无效时,这样写 height:calc(100%)
    H50067:body 背景颜色 背景图片 background 的 简写属性
    40、在last_update后面新增加一列名字为create_date
    39、使用强制索引查询
    38、针对actor表创建视图actor_name_view
    37、对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
    36、创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表
    35、批量插入如下数据,不使用replace操作
    34、批量插入如下数据
  • 原文地址:https://www.cnblogs.com/idior/p/99589.html
Copyright © 2011-2022 走看看