代码的坏味道之十六 :Middle Man(中间转手人)
2013-05-03 09:14
423 查看
对象的基本特征之一就是封装(encapsulation)——对外部世界隐藏其内部细节。封装往往伴随delegation (委托)。比如说你问主管是否有时间参加一个会议,他就把这个消息委托给他的记事簿,然后才能回答你。很好,你没必要知道这位主管到底使用传统记事簿或电子记事簿抑或秘书来记录自己的约会。
但是人们可能过度运用delegation。你也许会看到某个class接口有一半的函数都委托给其他class,这样就是过度运用。这时你应该使用Remove Middle Man(移除中间人),直接和实责对象打交道。如果这样「不干实事」的函数只有少数几个,可以运用 Inline Method(将函数内联化) 把它们" Inlining",放进调用端。如果这些Middle
Man还有其他行 为,你可以运用 Replace Delegation with Inheritance(以继承取代委托) 把它变成实责对象的subclass,这样你既可以扩展原对象的行为,又不必负担那么多的委托动作。
但是人们可能过度运用delegation。你也许会看到某个class接口有一半的函数都委托给其他class,这样就是过度运用。这时你应该使用Remove Middle Man(移除中间人),直接和实责对象打交道。如果这样「不干实事」的函数只有少数几个,可以运用 Inline Method(将函数内联化) 把它们" Inlining",放进调用端。如果这些Middle
Man还有其他行 为,你可以运用 Replace Delegation with Inheritance(以继承取代委托) 把它变成实责对象的subclass,这样你既可以扩展原对象的行为,又不必负担那么多的委托动作。
相关文章推荐
- 代码坏的味道16:中间人 (Middle Man)
- 重构笔记——代码的坏味道(上)
- 用Spring.Services整合 thrift0.9.2生成的wcf中间代码-复杂的架构带来简单的代码和高可维护性
- 【整理】【代码的坏味道】放散式变化(Divergent Change)
- Bad smell in code (代码的坏味道)
- 代码的坏味道之十二 :Lazy Class(冗赘类)
- 测试驱动开发系列之四--代码中的坏味道以及如何改进他们
- 【编译原理】中间代码(一)
- 代码重构-寻找坏味道
- 《重构:改善既有代码的设计》(二) 代码的坏味道
- 代码的坏味道_read from 《Refactoring》
- Qemu中间代码微指令类型总结
- 22种代码的坏味道,一句话概括
- weblogic jsp 编译:查看编译后的java中间代码
- 代码的坏味道【1】
- 调试中间代码
- 『重构--改善既有代码的设计』读书笔记----代码坏味道【5】
- 批处理代码遇到路径中间有空格怎么办?
- 理解Bitcode:一种中间代码
- 代码坏的味道20:纯稚的数据类 (Data Class)