美文网首页
重构手法--重新组织数据

重构手法--重新组织数据

作者: 理想是一盏灯 | 来源:发表于2018-09-07 16:34 被阅读14次

    1、自封装值域

    在对象内部,不直接访问自己的私有属性,而通过get/set方法访问

    2、以对象取代数据值

    如果某个数据值代表了某种东西,比如一个字符串值代表了手机号,现在需要为手机号进行格式化,进行抽取区号,此时就需要将数据值组装成对象

    3、将值对象替换为引用对象

    在对象共享时用,多个数据实体引用同一个对象时,可以使用

    4、将引用对象替换为值对象

    如果你有一个引用对象,很小且不可改变,而且不易管理,你就需要考虑将他改为一个值对象,java重写equals和hashcode

    5、以对象取代数组

    如果你有一个数组,其中的元素各自代表不同东西,比如你有一个strList数组;其中strList[0]代表选手姓名,strList[1]代表选手家庭住址,很显然这个数组表示的含义已经太多,你需要用对象来替换数组,并且对于数组中的每个元素,以一个字段来表示。

    6、Duplicate Observed Data(复制「被监视数据」)

    如果业务层的内容被内嵌于界面层中,我们需要把这分离出来

    --观察者模式

    7、Change Unidirectional Association to Bidirectional(将单向关联改为双向)

    两个classes都需要使用对方特性,但其间只有一条单向连接。改为互相引用

    8、Change Bidirectional Association to Unidirectional(将双向关联改为单向)

    两个鄉之间有双向关联,但其中一个class如今不再需要另一个class的特性。去除不必要的关联(association)。

    9、Replace Magic Number with Symbolic Constant(以符号常量/字面常量取代魔法数)

    你有一个字面数值(literal number ),带有特别含义。创造一个常量,根据其意义为它命名,并将上述的字面数值替换为这个常量。

    10、Encapsulate Field(封装值域)

    你的class中存在一个public值域。

    将它声明为private,并提供相应的访问函数(accessors)。

    11、Encapsulate Collection(封装集合)

    有个函数(method)返回一个集合(collection)。

    让这个函数返回该群集的一个只读映件(read-only view),并在这个class中提供「添加/移除」(add/remove)集合元素的函数。

    12、Replace Record with Data Class(以数据类取代记录)

    你需要面对传统编程环境中的record structure (记录结构)。

    为该record (记录)创建一个数据对象。

    13、Replace Type Code with Class(以类取代型别码)

    class 之中有一个数值型别码( numeric type code ),但它并不影响class 的行为。以一个新的class 替换该数值型别码(type code)。

    14、Replace Type Code with Subclasses(以子类取代型别码)

    你有一个不可变的(immutable)type code ,它会影响class 的行为。以一个subclass 取代这个type code。

    15、Replace Subclass with Fields(以值域取代子类)

    你的各个subclasses 的惟一差别只在「返回常量数据」的函数身上。修改这些函数,使它们返回superclass 中的某个(新增)值域,然后销毁subclasses 。

    相关文章

      网友评论

          本文标题:重构手法--重新组织数据

          本文链接:https://www.haomeiwen.com/subject/byicgftx.html