摘要: 概括 需要为服务类提供一些额外函数,但你无法修改此类。 建立一个新类,使它包含这些额外函数。让这个扩展称为源类的子类或包装类。 例子 动机.做法.实践.来自为知笔记(Wiz) 阅读全文
posted @ 2013-11-28 11:03 tanhaiyuan 阅读(165) 评论(0) 推荐(0) 编辑
摘要: 概括 需要为提供服务的类增加一个函数,但你无法修改这个类。 在客户类中建立一个函数,并以第一参数形式传入一个服务类实例。 例子Date newStart = new Date(previousEnd.getYear(), previousEnd.getMonth(),previousEnd.getDate()+1);重构后Date newStart = next... 阅读全文
posted @ 2013-11-28 10:45 tanhaiyuan 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 概括 某个类做了过多的简单委托动作。 让客户直接调用委托。 例子 动机 Hide Delegate中的封装是要付出代价的,代价:每当客户要使用委托的新特性时,必须在服务端增加一个简单委托函数。尤其是服务器委托变得很多后。做法.实践.来自为知笔记(Wiz) 阅读全文
posted @ 2013-11-28 10:44 tanhaiyuan 阅读(207) 评论(0) 推荐(0) 编辑
摘要: 概括 客户通过一个委托类来调用另一个对象。 在服务类上建立客户所需要的所有函数,用以隐藏委托关系。 例子 动机 如果某个客户先通过服务对象的字段得到另一个对象,然后调用后者的函数,那么客户就必须知晓这一层委托关系。 如果委托关系发生变化,客户也要发生变化。 可以在服务对象上放置一个简单的委托函数,将委托关系隐藏起来,从而去除这种依赖。做法.实践.来自为知笔记(W... 阅读全文
posted @ 2013-11-28 10:43 tanhaiyuan 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 概括 某个类没有做太多事情。 将这个类的所有特性搬移到另一个类中,然后移除原类。 例子.动机.做法.实践.来自为知笔记(Wiz) 阅读全文
posted @ 2013-11-28 10:31 tanhaiyuan 阅读(273) 评论(0) 推荐(0) 编辑
摘要: 概括 某个类做了应该由两个类做的事。 建立一个新类,将相关的字段和函数从旧类搬移到新类。 例子.动机 类中含有大量方法和数据。 类的子类化。做法.实践.来自为知笔记(Wiz) 阅读全文
posted @ 2013-11-28 10:21 tanhaiyuan 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 概括 程序中,某个字段被其所属了之外的另一个类更多的用到。 在目标类新建一个字段,修改源字段的所有用户,令它们改用新字段。 例子.动机 在类之间移动状态和行为,是重构过程中必不可少的措施。 如果发现,对于一个字段,在其所属了之外的另一个类中有更多函数使用了它,此时应考虑搬移这个字段。也可能移动该字段的用户(某个函数),这取决于接口。 使用Extract Class... 阅读全文
posted @ 2013-11-28 10:20 tanhaiyuan 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 概括 程序中,有个函数与其所属类之外的另一个类进行更多的交流:调用后者或被后者调用。 在该函数最常引用的类中建立一个有类似行为的新函数,将旧函数变成一个单纯的委托函数,或将旧函数完全移除。 例子.动机.做法.实践.来自为知笔记(Wiz) 阅读全文
posted @ 2013-11-28 10:19 tanhaiyuan 阅读(200) 评论(0) 推荐(0) 编辑