《重构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方法,不是吗?

目录
相关文章
|
3月前
|
设计模式
建模底层逻辑问题之以命令设计模式为例,要用定义法建模,如何实现
建模底层逻辑问题之以命令设计模式为例,要用定义法建模,如何实现
|
Java 编译器 应用服务中间件
代码开发优化细节
带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final修饰符可以让类不可以被继承,为方法指定final修饰符可以让方法不可以被重写。如果指定了一个类为final,则该类所有的方法都是final的。Java编译器会寻找机会内联所有的final方法,内联对于提升Java运行效率作用重大,具体参见Java运行期优化。此举能够使性能平均提高50% 。
208 2
代码开发优化细节
|
设计模式 Java
【Java设计模式 规范与重构】 一 重构的目的、内容、时机、方法
【Java设计模式 规范与重构】 一 重构的目的、内容、时机、方法
187 0
|
程序员 测试技术
《重构2》第十章-简化条件逻辑
《重构2》第十章-简化条件逻辑
338 0
|
数据处理
《重构2》第六章-重构基础
《重构2》第六章-重构基础
306 0
《重构2》第十二章-继承
《重构2》第十二章-继承
124 0
|
设计模式 算法 Java
如何优雅的用策略模式,取代臃肿的 if-else 嵌套,看这篇就够了
如何优雅的用策略模式,取代臃肿的 if-else 嵌套,看这篇就够了
1036 0
如何优雅的用策略模式,取代臃肿的 if-else 嵌套,看这篇就够了
|
前端开发
前端工作小结9-组件封装思想
前端工作小结9-组件封装思想
138 0
|
设计模式
【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )
【设计模式】装饰者模式 ( 概念 | 适用场景 | 优缺点 | 与继承对比 | 定义流程 | 运行机制 | 案例分析 )
288 0