`
blue2048
  • 浏览: 183092 次
  • 性别: 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 ...

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

    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...

    重构 改善既有代码的设计

     *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(以类取代型别码) 8.14 Replace Type Code with Subclasses (以子类取代型别码) 8.15 Replace Type Code with State/Strategy (以State/Strategy取代型别码) 8.16 Replace ...

    java代码重构

    8. **替换类型码与条件语句**(Replace Type Code with Class):用多态替换条件语句,使代码结构更清晰,减少错误的可能性。 9. **消除重复代码**(Delete Duplicate Code):当相同或几乎相同的代码出现在多个...

    重构_重构_改善既有代码_

    5. 使用聚合取代继承(Replace Inheritance with Delegation):当继承关系复杂时,可以考虑用组合或委托来代替,使设计更灵活。 重构不仅仅是技术操作,更是一种思维方式。它强调代码的可读性和可维护性比暂时的...

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

    6. **替换类型代码为类(Replace Type Code with Class)**:将枚举或常量替换为类,利用面向对象特性提高可扩展性。 7. **消除重复代码(Eliminate Duplicate Code)**:找出并消除代码中的重复部分,以减少维护...

    Unity3D_C#代码重构速成

    5. **替换类型为接口(Replace Type with Interface)**:在某些情况下,使用接口而不是具体的类可以使代码更具扩展性,易于替换或扩展实现。 6. **使用聚合取代组合(Replace Aggregation with Composition)**:...

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

    7. **多态(Replace Type Code with Subclasses)** - 通过多态替代类型码,即使用继承和接口来替代条件语句中的类型判断。 8. **继承(Replace Inheritance with Delegation)** - 在某些情况下,使用组合或委托...

    设计模式与重构(design pattern )

    3. 将函数参数对象化(Replace Parameter with Object):当一个函数接收多个参数且这些参数之间有关联时,可以创建一个新的对象来封装这些参数。 4. 移除重复代码(Remove Duplicate Code):找出并消除代码中的...

    重构 小抄 Smells to Refactorings

    - Replace Conditional with Strategy(用策略模式替换条件逻辑) - Replace State-Altering Conditionals with State(用状态模式替换状态改变的条件语句) 每种重构方法都有其适用的情景,重构的过程需要程序员对...

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

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

Global site tag (gtag.js) - Google Analytics