zoukankan      html  css  js  c++  java
  • 第8章 重新组织数据(暂略)

    自封装字段(Self Encapsulate Field)

    其实现在有了Spring框架,支持插件lombok,直接添加注释@Data即可完成封装

    (略...)

    以对象取代数据值(Replace Data Value with Object)

    其实就是我们平时常用的手法,即将类中散落的数据封装成一个自定义类型的数据,举个例子:

    如果一个类里需要数据值有水果品种,单价,重量,总金额,那么就把这四个数据封装成一个类就好。

    将值对象改为引用对象(Change Value to Reference)

    1.动机:

    当一个类衍生出许多相等的实体时,你希望将它们替换成单一对象,就将这个实体对象变成一个引用对象。

    2.区分:

    实体和引用,一个类能实例出很多不同的实体对象,而引用是实例出一个后,以后再调用这个类就直接等于了之前实例出的那个对象(指向了最初的实例对象)。

    将引用对象改为值对象(Change Reference to Value)

    1.动机:

    你有一个引用对象,很小且不可变,而且不易管理,将它变成一个值对象。

    略。。

    以对象取代数组(Replace Array with Object)

    1.动机:

    你有一个数组,其中的元素各自表示不同的东西,那么就以对象替换数组,对于数组中的每个元素,以一个字段来表示。

    复制“被监视数据”(Duplicate Observed Data)

    略。。

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

    略。。

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

    略。。

    以字面常量取代魔法值(Replace Magic Number with Symbolic Contant)

    1.概念:

    创造一个常量,根据其意义为它命名,并将上述的字面数值替换为这个常量。

    2.举例:

    static final double AMOUNT = 9.99;

    3.造成的坏味道:

    一旦这个数字修改,就要将所有地方引用到这个数字的地方修改一遍,多以换成常量很有必要。

    封装字段(Encapsulate Field)

    1.概念:

    你的类中存在一个public字段,将它声明为private,并提供相应的访问函数。

    2.动机:

    数据隐藏。

    封装集合(Encapsulate Collection)

    1.概念:

    有个函数返回一个集合,让这个函数返回该集合的一个只读副本,并在这个类中提供添加/移除集合元素的函数。

    2.动机:

    我们通常会在一个类中使用集合(collection, array, list...)来保存一组实例,这样的类通常也会提供针对集合的取值/设置函数。但集合的处理方式和其他种类的数据略有不同,取值函数不该返回集合自身,因为这会让用户得以修改集合内容而集合拥有者却一无所知,也会暴露过多对象内部数据结构的信息,所以一是需要隐藏对象内与用户无关的数据结构,二是应该为集合添加/移除元素的函数。

    略。。

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

    1.概念:

    你需要面对传统编程环境中的结构记录,为该记录创建一个“哑”数据对象。

    略。。

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

    略。。

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

    以State/Strategy取代类型码(Replace Type Code with State/Strategy)

    以字段取代子类(Replace Subclass with Fields)

  • 相关阅读:
    Java学习开篇
    《我的姐姐》
    世上本无事,庸人自扰之
    这48小时
    补觉
    淡定
    es java api 设置index mapping 报错 mapping source must be pairs of fieldnames and properties definition.
    java mongodb groupby分组查询
    linux 常用命令
    mongodb too many users are authenticated
  • 原文地址:https://www.cnblogs.com/wencheng9012/p/13555054.html
Copyright © 2011-2022 走看看