重构——15移除中间人(Remove Middle Man)

移除中间人(Remove Middle Man)

某个类做了过多的简单委托动作;让客户直接调用受托类

一、动机

1、封装委托对象有代价,每当客户要使用委托类的新特征是,你就必须在服务器端添加一个简单的委托函数

2、尺度很难拿捏,重构的意义就在于:你永远不必说对不起,只要把出问题的地方修补好就行了

二、做法

1、建立一个函数,用以获得受托对象

2、对于每个委托函数,在服务类中删除该函数,并让需要调用该函数的客户转为调用受托对象

3、处理每个委托函数后,编译、测试

时间: 2024-07-30 12:17:51

重构——15移除中间人(Remove Middle Man)的相关文章

重构——7移除对参数的赋值(Remove Assignments to Parameters)

移除对参数的赋值(Remove Assignments to Parameters) 代码对一个参数进行赋值,以一个临时变量取代该参数的位置 一.动机 1.降低了代码的清晰度 2.java只采用按值传递方式,我们的讨论也正是基于这一点 二.做法 1.建立一个临时变量,把待处理的参数值赋予它. 2.以"对参数赋值"为界,将其后的所有对此参数的引用点,全部替换为对此临时变量的引用 3.修改赋值语句,使其对新建之临时变量赋值 4.编译,测试

重构——37移除控制标记(Remove Control Flag)

移除控制标记(Remove Control Flag) 在一系列表达式中,某个变量带有"控制标记作用":以break语句或者return语句取代控制标记 一.动机 单一出口的原则会大大降低代码的可读性 二.做法 1.找出让你跳出这段程序的控制标记值 2.找出对标记变量赋值的语句,代以恰当的break语句或continue语句 3.每次替换后,编译并测试 4.在未能提供break和continue的编程语言中 5.使用Extract Method,恰当的return

重构——44移除参数(Remove Parameter)

移除参数(Remove Parameter) 函数本体不再需要某个函数:将该参数去除 一.动机 不去掉多余的参数,就让用户多费一份心 二.做法 1.检查函数签名是否被超类或者子类实现,如果是,则需要针对每份实现分别进行下列步骤 2.声明一个新函数,名称与原函数相同,只是去除不必要的参数.将旧函数代码复制到新函数中 3.编译 4.修改旧函数,令它调用新函数 5.编译,测试 6.找出旧函数所有的引用点,将它们全部修改为对新函数的引用.每次修改后,编译并测试删除旧函数,或者deprecated 7.编

重构——51移除设值函数(Remove Setting Method)

移除设值函数(Remove Setting Method) 类中的某个字段应该在对象创建时被设值,然后就不再改变:去掉该字段的所有设值函数 一.动机 不希望对象被改变,就不要提供设值函数,同时final之 二.做法 1.检查设值函数被使用的情况,看它是否只被构造函数调用,或者被构造函数所调用的另一个函数调用 2.修改构造函数,使其直接访问设值函数所针对的那个变量 3.编译,测试 4.移除这个设值函数,将它所针对的字段设置为final 5.编译,测试

Visual Studio 15 移除 UML 支持

因为使用率太低,微软在Visual Studio 15中移除了UML(Unified Modeling Language)的支持. Visual Studio高级产品经理Jean-Marc Prieur解释说,UML设计工具只被很少的客户使用.Prieur称,移除一个特性总归是一个艰难的决定,但我们需要确保将资源投入到能提供最大客户价值的特性上.UML用户在寻找替代工具时候可以选择Visual Studio 2015或更早的版本. 文章转载自 开源中国社区 [http://www.oschina

PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性_php技巧

思维导图 索引: Ø Move Method(搬移函数) Ø Move Field (搬移值域) Ø Extract Class (提炼类) Ø Inline Class (将类内联化,就是把当前的类合并到其他类中) Ø Hide Delegate (隐藏委托关系) Ø Remove Middle Man ( 移除中间人) Ø Introduce Foreign Method (引入外加函数) Ø Introduce Local Extension (引入本地扩展)    介绍    承接上文P

重构 对象之间搬移特性

Move Method 如果一个类中的方法与另一个类有很多的交流,那么我们就在另一个类中建立一个有类似功能的新函数,将旧函数变成一个单纯的Delegating Method, 或是将旧函数移除. Move Field  状况:你的class中的field被另一个class更多的用到.那么在另一个class里建立new field,修改旧的field. Extract Class 状况:一个类做了两个类做的事,那么建立一个新Class,将相关的Field和Method从旧Class移到新Class

代码重构(二):类重构规则

在上篇博客<代码重构(一):函数重构规则(Swift版)>中,详细的介绍了函数的重构规则,其中主要包括:Extract Method, Inline Method, Inline Temp, Replace Temp with Query, Introduce Explaining Variable, Split Temporary Variable, Remove Assignments to Parameters, Replace Method with Method Object等.关于

《重构:改善既有代码的设计》—重构列表

重构列表重构:改善既有代码的设计Add Parameter(添加参数) Change Bidirectional Association to Unidirectional(将双向关联改为单向关联) Change Reference to Value(将引用对象改为值对象) Change Unidirectional Association to Bidirectional(将单向关联改为双向关联) Change Value to Reference(将值对象改为引用对象) Collapse H