`
blue2048
  • 浏览: 178538 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

重构三 Replace Type Code with Class

阅读更多
有些类中存在类型码,可能是常量、也可能是枚举类型,这些其实也挺好,但是有时代码逻辑变的复杂时,我们想让状态码也承担一部分责任,这时我们使用Replace Type Code with Class进行重构。
首先,这份三种情况,
    1.如果在原始类中,状态码只是常量,我们使用Replace Type Code with Class
    2.如果在原始类中,方法根据状态码有一些列动作,且原始类没有子类,这时我们使用Replace Type Code with Subclasses
    3.如果原始类有子类,那么我们使用Replace Type Code with State/Strategy
    个人认为后两者原理相同,都是为了引入集成体系,如果可以利用原始类作基类就少引入一个类,否则就需要像3一样,需要引入单独的基类。

    对于1,很简单,用对象替代状态码,对象中维护状态。
    对于2和3,需要将原始类中状态码的逻辑移到继承体系中去,使用多态来去除状态码的丑陋。
    另外,需要注意的是,不论哪中方法,都无法完全消除switch的影子,但是将switch作为初始化对象使用,还是可以忍受的。
分享到:
评论

相关推荐

    重构-改善既有代码的设计(中文版)

     *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   Replace Type Code with State/Strategy用State/Strategy 代替类型码   Replace Subclass with ...

    重构-改善既有代码的设计+中文版

     *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   Replace Type Code with State/Strategy用State/Strategy 代替类型码   Replace Subclass with ...

    重构_改善既有代码的设计[高清版]中文版

     *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   Replace Type Code with State/Strategy用State/Strategy 代替类型码   Replace Subclass with ...

    重构-改善既有代码的设计 中文版.pdf

    8.13 Replace Type Code with Class(以类取代型别码) 8.14 Replace Type Code with Subclasses (以子类取代型别码) 8.15 Replace Type Code with State/Strategy (以State/Strategy取代型别码) 8.16 Replace ...

    重构 改善既有代码的设计

     *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   Replace Type Code with State/Strategy用State/Strategy 代替类型码   Replace Subclass with ...

    重构——改善既有代码的设计

     *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   Replace Type Code with State/Strategy用State/Strategy 代替类型码   Replace Subclass with ...

    重构,改善既有代码的设计

     *ReplaceType Code with Class 用类代替类型码   Replace Type Code with Subclasses 用子类代替类型码   Replace Type Code with State/Strategy用State/Strategy 代替类型码   Replace Subclass with ...

    重构:改善既有代码的设计.[美]Martin Fowler.epub【文字版手机格式】

    8.13 Replace Type Code with Class(以类取代类型码) 8.14 Replace Type Code with Subclasses(以子类取代类型码) 8.15 Replace Type Code with State/Strategy(以State/Strategy取代类型码) 8.16 Replace ...

    重构-改善既有代码的设计

    8.13 Replace Type Code with Class(以类取代类型码) 218 8.14 Replace Type Code with Subclasses(以子类取代类型码) 223 8.15 Replace Type Code with State/Strategy(以State/Strategy取代类型码) 227...

    重构-改善既有代码的设计 中文版

    8.13 Replace Type Code with Class(以类取代型别码) 8.14 Replace Type Code with Subclasses (以子类取代型别码) 8.15 Replace Type Code with State/Strategy (以State/Strategy取代型别码) 8.16 Replace ...

    重构:改善既有代码的设计(中文高清版)

    6.4 ReplaceTempwithQuery(以查询取代临时变量)120 6.5 IntroduceExplainingVariable(引入解释性变量)124 6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值...

    重构:改善既有代码的设计(中文版).

    6.4 ReplaceTempwithQuery(以查询取代临时变量)120 6.5 IntroduceExplainingVariable(引入解释性变量)124 6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值...

    《重构改善既有代码的设计(2010年版)》(Martin Fowler[美] 著,熊节 译)

    6.4 ReplaceTempwithQuery(以查询取代临时变量)120 6.5 IntroduceExplainingVariable(引入解释性变量)124 6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值...

    重构_改善既有代码的设计[高清版]【已进行内容识别处理,可搜索,可编辑+有目录】

    3.1 Duplicated Code (重复代码)··· ····· ·· ····· ·· ····….. ……······································· ….......... 76 3.2 Long Method C ...

    重构_改善既有代码的设计.pdf

    6.4 ReplaceTempwithQuery(以查询取代临时变量)120 6.5 IntroduceExplainingVariable(引入解释性变量)124 6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值...

    重构_改善既有代码的设计

     6.4 ReplaceTempwithQuery(以查询取代临时变量)120  6.5 IntroduceExplainingVariable(引入解释性变量)124  6.6 SplitTemporaryVariable(分解临时变量)128  6.7 RemoveAssignmentstoParameters(移除对...

    重建——改善既有代码的设计

    6.4 ReplaceTempwithQuery(以查询取代临时变量)120 6.5 IntroduceExplainingVariable(引入解释性变量)124 6.6 SplitTemporaryVariable(分解临时变量)128 6.7 RemoveAssignmentstoParameters(移除对参数的赋值...

    uninstall是安卓开发的一部分代码

    Android Studio代码调试大全 快捷键查找表 速查表列出了 keymap 快捷键的名称. 可以直接通过 AS setting 界面搜索 keymap . 通过对应的快捷键名称来添加...重构入口 Refactor This control + T ctrl + alt + shift + T

    asp.net知识库

    忽略大小写Replace效率瓶颈IndexOf 随机排列算法 理解C#中的委托[翻译] 利用委托机制处理.NET中的异常 与正则表达式相关的几个小工具 你真的了解.NET中的String吗? .NET中的方法及其调用(一) 如何判断ArrayList,...

Global site tag (gtag.js) - Google Analytics