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 基础练习 完美的代价
    C# 获得手机归属地功能
    c# HttpWebRequest与HttpWebResponse(转)
    C# Winfrom小黄鸡功能调用
    Winfrom 抓取web页面内容代码
    Winform将网页生成图片
    Winform上传下载文件代码
    Jquery LigerUI框架学习(二)之Tree于Tab标签实现iframe功能
    Jquery LigerUI框架学习(一)
    C# 生成简单验证码
  • 原文地址:https://www.cnblogs.com/wencheng9012/p/13555054.html
Copyright © 2011-2022 走看看