摘要: 【1】源代码 【2】以对象取代数组 【3】总结 有一个数组 ,其中的元素各自代表不同的东西。以对象替换数组。 对于数组中的每个元素,以一个字段来表示。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 19:15 kaizenly 阅读(311) 评论(0) 推荐(0) 编辑
摘要: 【1】源代码 到目前为止,客户Customer对象还是值对象value object。 即就算多份订单属于同一客户,但每个订单order对象还是拥有各自的客户Customer对象。 我希望改变这一现状:使得一旦发现同一客户拥有多份不同的订单,那么所有这些订单Order对象只可以共享同一个客户Cust 阅读全文
posted @ 2017-08-11 18:06 kaizenly 阅读(700) 评论(0) 推荐(0) 编辑
摘要: 【1】源代码 【2】以对象取代数据值 【3】总结 有一个数据项,需要与其他数据和行为一起使用才有意义。将数据项变为对象。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 14:12 kaizenly 阅读(686) 评论(0) 推荐(0) 编辑
摘要: 【1】源代码 【2】自封装字段 【3】总结 直接访问一个字段,但与字段之间的耦合关系逐渐变得笨拙。 为这个字段建立取值/设值函数,并且只以这些函数来访问字段。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 13:56 kaizenly 阅读(303) 评论(0) 推荐(0) 编辑
摘要: 【1】源代码 【2】引入本地扩展(子类 或 包装类) 【3】总结 你需要为服务类提供一些额外函数,但你无法修改这个类。 建立一个新类,使它包含这些额外函数。让这个扩展品成为源类的子类或包装类。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 11:35 kaizenly 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 【1】场景 你需要为提供服务的类增加一个函数,但你无法修改这个类。在客户类中建立一个函数,并以第一参数形式传入一个服务类实例。 【2】动机 2.1 如果真的用心体会过,这种事情应该发生太多次了。你正在使用一个类,它真的很好,为你提供了需要的所有服务。 而后,你又需要一项新服务,这个类却无法供应。于是 阅读全文
posted @ 2017-08-11 11:03 kaizenly 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 【1】移除中间人 该手法和[2.5 隐藏委托关系] 正好相反。正是由于相反,才能够在实际的应用中进行灵活的变通。 可能一些委托关系需要保留,而另一些却需要移除,让客户直接使用受托对象。这些都是可以随之变通的。 对于各种不同重构手法的使用,同样没有绝对的规定,都是需要依据实际灵活使用的。真所谓“唯变通 阅读全文
posted @ 2017-08-11 10:53 kaizenly 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 【1】源代码 【2】隐藏委托关系 【3】总结 客户通过一个委托类来调用另一个对象。 在服务类上建立客户所需的所有函数,用以隐藏委托关系。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 10:43 kaizenly 阅读(322) 评论(0) 推荐(0) 编辑
摘要: 【1】将类内联化 将类内联化与提炼类方法相反。请参见《2.3提炼类》 【2】总结 如果某个类没有做太多事情,将这个类中的所有特性移到另外一个类中,然后删除原类。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 09:31 kaizenly 阅读(281) 评论(0) 推荐(0) 编辑
摘要: 【1】源代码 【2】提炼类 【3】总结 某个类做了应该由两个类做的事。建立一个新类,将相关的字段和函数从旧类搬移到新类。 Good Good Study, Day Day Up. 顺序 选择 循环 总结 阅读全文
posted @ 2017-08-11 09:24 kaizenly 阅读(284) 评论(0) 推荐(0) 编辑
打赏