2007-04-06
重构原则(Java)
关键字: Java 重构
1995,Auer曾在文献[AUER95]中指出:
1.应当根据行为而不是状态定义一个类。也就是说,一个类的实现首先建立在行为基础之上,而不是建立在状态的基础之上。
2.在实现行为时,是用抽象状态而不是用具体状态。如果一个行为涉及到对象的状态时,使用间接的引用而不是直接的引用。换言之,应当使用取值方法而不是直接引用属性。
3.给操作划分层次。一个类的行为应当放到一个小组核心方法(kernel method)里面,这些方法以很方便地在子类中加以置换。
4.将状态属性的确认推迟到子类中。不要在抽象类中过早声明属性变量,应该将它们尽量地推迟到子类中去声明。在抽象超类中,如果需要状态属性的话,可以调用抽象的取值方法,而将抽象的取值方法的实现放到具体子类中。
如果能够遵从这样的原则,那么就可以在等级结构中将接口与实现分隔开来,将抽象与具体分割开来,从而保证代码可以最大限度地被复用。
1.应当根据行为而不是状态定义一个类。也就是说,一个类的实现首先建立在行为基础之上,而不是建立在状态的基础之上。
2.在实现行为时,是用抽象状态而不是用具体状态。如果一个行为涉及到对象的状态时,使用间接的引用而不是直接的引用。换言之,应当使用取值方法而不是直接引用属性。
3.给操作划分层次。一个类的行为应当放到一个小组核心方法(kernel method)里面,这些方法以很方便地在子类中加以置换。
4.将状态属性的确认推迟到子类中。不要在抽象类中过早声明属性变量,应该将它们尽量地推迟到子类中去声明。在抽象超类中,如果需要状态属性的话,可以调用抽象的取值方法,而将抽象的取值方法的实现放到具体子类中。
如果能够遵从这样的原则,那么就可以在等级结构中将接口与实现分隔开来,将抽象与具体分割开来,从而保证代码可以最大限度地被复用。
发表评论
- 浏览: 17231 次
- 性别:

- 来自: 杭州

- 详细资料
搜索本博客
我的相册
myicon.png
共 7 张
共 7 张
最新评论
-
[摘]正确的创业者心态
ddd 写道》不过,如果这旧调本身不错,多弹几次,又有什么关系呢? 楼主看过古龙 ...
-- by spyker -
[摘]正确的创业者心态
》不过,如果这旧调本身不错,多弹几次,又有什么关系呢?楼主看过古龙的书,鉴定完毕 ...
-- by ddd -
无意中网上看到一篇关于ge ...
有很多必要的功能必须使用特定的插件,而这些插件又不是缺省安装必带的,所以用起来很 ...
-- by SteveGY -
无意中网上看到一篇关于ge ...
姜太公 写道可惜它的给关键字等加的颜色太难看。还有很多重复的gedit失败的地方 ...
-- by seen -
无意中网上看到一篇关于ge ...
可惜它的给关键字等加的颜色太难看。还有很多重复的
-- by 姜太公






评论排行榜