zoukankan      html  css  js  c++  java
  • 转:代码的坏味道之二十 :Data Class(纯稚的数据类)或POJO

    所谓Data Class是指:它们拥有一些值域(fields),以及用于访问(读写〕这些值域的函数,除此之外一无长物。这样的classes只是一种「不会说话的数据容器」,它们几乎一定被其他classes过份细琐地操控着。这些classes早期可能拥有public值域,果真如此你应该在别人注意到它们之前,立刻运用Encapsulate Field (封装值域,(就是将public 域变成private然后设置set和get)。将它们封装起来。如果这些classes内含容器类的值域(collection fields),你应该 检査它们是不是得到了恰当的封装;如果没有,就运用 Encapsulate Collection(封装群集:

    A method returns a collection.

    Make it return a read-only view and provide add/remove methods.

     把它们封装起来。对于那些不该被其他classes修改的值域,请运用 Remove Setting Method(移除设置函数)

    然后,找出这些「取值/设值」函数(getting and setting methods)被其他classes运用的地点。尝试以Move Method(搬移函数) 把那些调用行为搬移到Data Class来。如果无法搬移整个函数,就运用 Extract Method(提炼函数) 产生一个可被搬移的函数。不久之后你就可以运用Hide Method (隐藏某个函数)把这些「取值/设值」函数隐藏起来了。

    Data Class就像小孩子。作为一个起点很好,但若要让它们像「成年(成熟)」的对象那样参与整个系统的工作,它们就必须承担一定责任

    转自:http://blog.csdn.net/yuwei629/article/details/8878678

    英文:http://sourcemaking.com/refactoring/data-class

    J2EE中我们可以经常看见POJO,那么这是什么意思呢?全称是Plain Old Java Object,简单的Java对象(,实际就是普通JavaBeans。

    使用POJO名称是为了避免和 EJB混淆起来, 而且简称比较直接. 其中有一些属性及其getter setter方法的类,没有业务逻辑,有时可以作为 VO(value -object)或 dto(Data Transform Object)来使用.当然,如果你有一个简单的运算属性也是可以的,但不允许有业务方法,也不能携带有connection之类的方法。 
      POJO是Plain Old Java Objects的缩写不错,但是它通指没有使用Entity Beans的普通java对象,可以把POJO作为支持业务逻辑的协助类。 
      POJO实质上可以理解为简单的实体类,顾名思义POJO类的作用是方便程序员使用数据库中的数据表,对于广大的程序员,可以很方便的将POJO类当做对象来进行使用,当然也是可以方便的调用其get,set方法。POJO类也给我们在struts框架中的配置带来了很大的方便。 
      POJO有一些private的 参数作为对象的属性。然后针对每个参数定义了get和set方法作为访问的接口。例如: 
      public class User { 
      private long id; 
      private String name; 
      public void setId(long id) { 
      this. id = id; 
      } 
      public void setName(String name) { 
      this. name=name; 
      } 
      public long getId() { 
      return id; 
      } 
      public String getName() { 
      return name; 
      } 
      } 
      POJO对象有时也被称为Data对象,大量应用于表现现实中的对象。如果项目中使用了Hibernate 框架,有一个关联的xml文件,使对象与数据库中的表对应,对象的属性与表的字段对应。 
      错误的认识: 
      POJO是这样的一种“纯粹的”JavaBean,在它里面除了JavaBean规范的方法和属性没有别的东西,即private属性以及对这个属性方法的public的get和set方法。我们会发现这样的JavaBean很“单纯”,它只能装载数据,作为数据存储的载体,而不具有业务逻辑处理的能力。 
      真正的意思: 
      POJO = "Plain Ordinary Java Object",是MartinFowler等发明的一个术语,用来表示普通的Java对象,不是JavaBean, EntityBean 或者 SessionBean。POJO不担当任何特殊的角色,也不实现任何特殊的Java框架的接口如,EJB, JDBC等等。 
      即POJO是一个简单的普通的Java对象,它不包含业务 逻辑或持久逻辑等,但不是JavaBean、EntityBean等,不具有任何特殊角色和不继承或不实现任何其它Java框架的类或接口。 
      下面是摘自Martin Fowler个人网站的一句话: 
      "We wondered why people were so against using regular objects in their systems and concluded that it was because simple objects lacked a fancy name. So we gave them one, and it's caught on very nicely."--MartinFowler.com 
      我们疑惑为什么人们不喜欢在他们的系统中使用普通的对象,我们得到的结论是——普通的对象缺少一个响亮的名字,因此我们给它们起了一个,并且取得了很好的效果。——Martin Fowler

  • 相关阅读:
    POJ 3458 Colour Sequence(简单题)
    Cygwin下vim按方向键出现ABCD;
    算法之旅——归并排序
    poj 2769 Reduced ID Numbers(memset使用技巧)
    Restlet+Fastjson 高速构建轻量级 Java RESTful Webservice
    poj 1659 Frogs' Neighborhood (度序列)
    PHP监測memcache服务端的执行状况
    机器学习之倚门回首嗅青梅
    Threejs 官网
    sqlserver安全加固
  • 原文地址:https://www.cnblogs.com/youxin/p/3530684.html
Copyright © 2011-2022 走看看