《重构2》第七章-封装

简介: 《重构2》第七章-封装

封装的意义,在于提炼相同的代码逻辑,借以复用!
同时,类,也是用来隐藏部分信息的好方法!

1.封装记录

通俗说法就是,将变量对象或需要处理的数据,或不想改变原有值的对象数据,将其封装在一个类中,暴露各种获取方法,产生逻辑所需要的各种数据!
多用于数据转化、深拷贝、格式化数据等等...
同时缺点也明显,在复制巨大数据结构时,性能消耗大,按需使用!

2. 封装集合

封装记录后返回只读数据/副本数据,即深拷贝后的新数据,避免外部操作,引发数据源的变动;
基于以上操作,你需要在类中添加新增/修改/移除函数,用于修改函数树脂,避免在外部操作数据!

3.以对象代替基本类型

在重构一中,也称为以类取代类型码
当一份数据不局限于展示时,就可以为其创建一个类,尽管初期很繁琐,的却,但是,当业务越来越复杂,这个类的好处就越明显!
给这个数据一个取值函数,这是基础的!

4.以查询取代临时变量

某些只需要使用一次的计算,且不再改变的变量,可以直接忽略声明,直接在逻辑中以函数代替

5.提炼类/内联类

提炼类和内连类是相反的操作
提炼类:当一个类中函数过于庞大,过于多时,或让这个类难以被人理解,可以考虑将部分功能拆分为更为具体的类,活着提炼一部分超类出来!
内联类:当一个类中的函数逐渐被优化、被废弃、被提炼,最终只剩下为数不多的细小的功能,可以考虑将类废弃,并将函数直接放到具体的代码逻辑中

6.隐藏委托关系/移除中间人

简而言之,就是常见一个类,将客户端的链式调用,放到一个函数中,可以端只需要带哦用一个类就可以获取到想要的值,而不用关心数据之间的链式调用
例如:客户端需要知道某人的经理是谁
后端:
Class Person

constrctor(name){
  this._name = name
}
get name(){return this.name;}
get department(){return this._department;}
set department(arg){this._department = args;}

Class Deparment


get manager(){return this._manager;}
set manager(arg){this._manager = args;}

客户端调用:

manager = aPerson.department.manager;

优化后:
Class Person

get manager(){return this._department.manager;}

客户端调用

manager = aPerson.manager;

移除中间人:这种操作是按代码情况而定,当不需要隐藏委托关系时,就可以去除中间人。
为什么要移除中间人,当隐藏的委托关系过多时,就完全变成了一个数据中转站,这并不是我们想要的操作,我们要的是轻量级,这样沉重的操作就需要被优化调!

7.替换算法

将一些复杂的算法,拆分为多了小的算法,最后组合长想要的数据,算法也是需要根据时代去变化的,比如,es6中的includs方法就很好的代替了es5中的find方法,不是吗?

目录
相关文章
|
设计模式 算法 Java
设计模式第十五讲:重构 - 改善既有代码的设计(下)
设计模式第十五讲:重构 - 改善既有代码的设计
294 0
|
设计模式 Java 测试技术
设计模式第十五讲:重构 - 改善既有代码的设计(上)
设计模式第十五讲:重构 - 改善既有代码的设计
336 0
|
设计模式 Java
【Java设计模式 规范与重构】 一 重构的目的、内容、时机、方法
【Java设计模式 规范与重构】 一 重构的目的、内容、时机、方法
199 0
|
设计模式 IDE Java
【Java设计模式 规范与重构】 四 小型重构的手段:规范的十五条军规
【Java设计模式 规范与重构】 四 小型重构的手段:规范的十五条军规
135 0
|
数据处理
《重构2》第六章-重构基础
《重构2》第六章-重构基础
310 0
|
程序员 测试技术
《重构2》第十章-简化条件逻辑
《重构2》第十章-简化条件逻辑
344 0
《重构2》第十二章-继承
《重构2》第十二章-继承
129 0
|
设计模式 Java
面向对象的设计原则最终篇(一)
关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则,依赖倒置原则而接下来我们要解释的就是最后的三种原则了,分别是接口隔离原则, 迪米特法则, 组合复用原则。
面向对象的设计原则最终篇(一)
|
设计模式
面向对象的设计原则最终篇(二)
关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则,依赖倒置原则而接下来我们要解释的就是最后的三种原则了,分别是接口隔离原则, 迪米特法则, 组合复用原则。
面向对象的设计原则最终篇(二)
重构-改善既有代码的设计-简化函数调用
Rename Method 函数改名 问题函数的名称未能揭示函数的用途。方法修改函数名称。动机好的函数需要有一个清晰的函数名。
1016 0
下一篇
DataWorks