重构——18自封装字段(Self Encapsulate Field)

自封装字段(Self Encapsulate Field)

你直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙;为这个字段建立取值/设置函数,并且只以这些函数来访问字段

一、动机

如果你想访问超类中的一个字段,却又想在子类中将对这个字段的访问改为一个计算后的值,这就是该用Self Encapsulate Field的时候

二、做法

1、为待封装的字段建立取值/设值函数

2、找出该字段所有的引用点,将它们全部改为调用取值/设值函数

3、将该字段声明为private

4、复查,确保找出所有的引用点

5、编译,测试

时间: 2024-09-20 22:34:40

重构——18自封装字段(Self Encapsulate Field)的相关文章

重构——27封装字段(Encapsulate Field)

封装字段(Encapsulate Field) 你的类中存在一个public字段:将它声明为private,并提供相应的访问函数 一.动机 面向对象的重用原则之一就是封装,或者称为"数据隐藏" 二.做法 1.为public字段提供取值/设值函数 2.找到这个类之外使用该字段的所有地点.如果客户只是读取该字段,就把引用替换为对取值函数的调用:如果客户修改了该字段,就将此引用点替换为对设值函数的调用 3.每次修改后,编译并测试 4.将字段的所有用户修改完毕后,将字段声明为private 5

重构——11搬移字段(Move Field)

搬移字段(Move Field) 你的程序中,某个字段被其所驻类之外的另一个类更多的用到.在目标类新建一个字段,修改源字段的所有用户,令它们该用新字段 一.动机 在类之间移动状态和行为很正常 二.做法 1.如果字段的访问级别是public,使用Encapsulate Field将它封装起来 2.编译,测试 3.在目标类中建立与源字段相同的字段,并同时建立相应的设值/取值函数 4.编译目标类 5.决定如何在源对象中引用目标对象 6.删除源字段 7.将所有对源字段的引用替换为对某个目标函数的调用 8

重构——28封装集合(Encapsulate Collection)

封装集合(Encapsulate Collection) 有个函数返回一个集合:让这个函数返回该集合的一个只读副本,并在这个类中提供添加/移除集合元素的函数 一.动机 1.取值函数不应该返回集合本身 2.不应该为整个集合提供一个设值函数 二.做法 1.加入为集合添加/移除元素的函数 2.将保存集合的字段初始化为一个空集合 3.编译 4.修改所有集合设值函数的调用者 5.编译,测试 6.找出所有通过取值函数获取集合并修改其内容的函数,修改之,每次修改后,编译并测试 7.修改集合取值函数自身,使它返

c#-C#封装字段问题:两者的区别

问题描述 C#封装字段问题:两者的区别 (1) private int a; public int A { get { return a; } set { a = value; } } (2) public int a { get; set; } 这两者分别什么意思?有什么区别? 解决方案 从表面上没啥区别,当你访问这个类时, public int A { get { return a; } set { a = value; } } 只能通过类.A 而 public int a { get; s

c#和java中封装字段的不同

c#: private String name; public String Name { get { return name; } set { name = value; } } java: private String name; public String getName() { return name; } public void setName(String name) { this.name = name; } 总结: 字段的使用场景:与类或者对象关系密切,建议使用private修饰

《圣殿祭司的ASP.NET4.0专家技术手册》----1-10 程序代码重构

1-10 程序代码重构 圣殿祭司的ASP.NET4.0专家技术手册 所谓重构(Refactoring),是指对软件程序进行重新改写或调配,那干嘛不直接叫Rewrite?意义当然不一样,因为Rewrite只是单纯地改写,不一定有什么了不得的意义,而重构是含有目的性的改写,或重新优化整个程序架构,其中甚至有"方法论"在里头,也就是有许多程序方法学的指导性方针,"重构"一词其实存在软件界已久,而Java的Eclipse或NetBeans开发工具对"重构"

代码重构(三):数据重构规则

在<代码重构(一):函数重构规则(Swift版)>和<代码重构(二):类重构规则(Swift版)>中详细的介绍了函数与类的重构规则.本篇博客延续之前博客的风格,分享一下在Swift语言中是如何对数据进行重构的.对数据重构是很有必要的,因为我们的程序主要是对数据进行处理.如果你的业务逻辑非常复杂,那么对数据进行合理的处理是很有必要的.对数据的组织形式以及操作进行重构,提高了代码的可维护性以及可扩展性. 与函数重构与类重构类似,对数据结构的重构也是有一定的规则的.通过这些规则可以使你更

重构——57字段上移(Pull Up Field)

字段上移(Pull Up Field) 两个子类拥有相同的字段:将该字段移至超类 一.动机 去除重复 二.做法 1.针对待提升之字段,检查它们所有的被使用点,确认它们以同样的方式被使用 2.如果这些字段名称不同,先将它们改名,使每一个名称都和你想为超类取的名称相同 3.编译,测试 4.在超类中新建一个字段 5.移除子类中的字段 6.编译,测试 7.考虑对超类的新建字段使用Self Encapsulate Field

eclipse重构详解(转)

  重构是对软件内部结构的一种调整,目的是在不改变软件行为的前提下,提高其可理解性,降低其修改成本.开发人员可以使用一系列重构准则,在不改变软件行为的前提下,调整软件的结构. 有很多种原因,开发人员应该重构代码,例如之前的开发人员代码写得很烂.自己以前设计时有缺陷.需求变更需要添加一些新的功能或修改原有功能等等.Martin Fowler在其著名的<<Refactoring-Improving the Design of Existing Code>>一书中谈到了为何重构的几点原因