在对象之间搬移特性(Moving features Between Objects)
2009-09-19 00:49
357 查看
在对象的设计过程中,[决定把责任放在哪儿]即使不是最重要的事,也是最重要的事之一。
如果一个class有太多行为,或如果一个class与另一个class有太多合作而形成高度耦合(highly coupled),就应该搬移函数;
是否应该移动一个函数,这往往不是一个容易做出的决定,如果不能肯定是否应该移动一个函数,那么或许[移动这个函数与否]并不是那么重要。
Code
public class MyDateWrap
{
private Date original;
public MyDateWrap(Date arg)
{
original = arg;
}
public int getYear()
{
return original.getYear();
}
public int getMonth()
{
return original.getMonth();
}
public int getDate()
{
return original.getDate();
}
private Date nextDay()
{
return new Date(getYear(),getMonth(),getDate() + 1);
}
}
1 Move Method(搬移函数)
概述
你的程序中,有个函数与其所驻class之外的另一个class进行更多交流:调用后者,或被后者调用。在该函数最常引用(指涉)的class中建立一个有着类似行为的新函数,将旧函数变成一个单纯的委托函数(delegating method),或是将旧函数完全移除;动机
[函数搬移]是重构理论的支柱。如果一个class有太多行为,或如果一个class与另一个class有太多合作而形成高度耦合(highly coupled),就应该搬移函数;
是否应该移动一个函数,这往往不是一个容易做出的决定,如果不能肯定是否应该移动一个函数,那么或许[移动这个函数与否]并不是那么重要。
范例
我们用一个表示[账户]的class来说明这项重构:Code
public class MyDateWrap
{
private Date original;
public MyDateWrap(Date arg)
{
original = arg;
}
public int getYear()
{
return original.getYear();
}
public int getMonth()
{
return original.getMonth();
}
public int getDate()
{
return original.getDate();
}
private Date nextDay()
{
return new Date(getYear(),getMonth(),getDate() + 1);
}
}
相关文章推荐
- 重构—改善既有代码的设计007:在对象之间搬移特性(Moving Features Between Objects)
- 一起谈.NET技术,改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
- 改善代码设计 —— “.NET研究”优化物件之间的特性(Moving Features Between Objects)
- 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
- 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
- 改善代码设计 —— 优“.NET技术”化物件之间的特性(Moving Features Between Objects)
- 改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
- 在对象之间搬移特性(二)
- 在对象之间搬移特性
- 第七章 在对象之间搬移特性
- 重构手法之在对象之间搬移特性【2】
- 《重构--改善既有代码的设计》--在对象之间搬移特性(7)
- 重构手法(二) —— 在对象之间搬移特性
- 在对象之间搬移特性之三 :Extract Class(提炼类)
- PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性
- 重构摘要7_在对象之间搬移特性
- 重构系列之对象间的重构:《重构》对象之间搬移特性
- 在对象之间搬移特性之四 :Inline Class(将类内联化)
- 在对象之间搬移特性---搬移函数
- PHP 杂谈《重构-改善既有代码的设计》之二 对象之间搬移特性