如果你特意只是弄一个“练习题”,没有背景需求,那么任何重构要求其实都不充分。如果你有一定的设计背景的经历,这可以去了解,通常对于业务领域上低级的switch-case逻辑是要重构为多态方式处理逻辑的。

解决方案 »

  1.   

    相同的编码如果在switch中不好处理,你可以考虑放在switch外作条件处理
      

  2.   

    晕!sritch-case就是条件处理。而设计模式是说,不要写一大堆垃圾条件判断。
      

  3.   

    比如说,你可以写一个顶层设计public abstract class 我的业务State
    {
        public ......各种环境变量;    public virtual bool CheckCondition();   public virtua int CalcUserBalance();   public virtual 我的业务State GotoNextState();
    }你能够将这个类型参与原来系统操作的流程写出来,然后逐步增加其子类即可。使用它,你就不需要对其垃圾switch-case代码。特别是,许多子类操作是在你设计出这个系统之后才追加的。而追加它们时,根本不用重新修改和编译已经写过的核心代码。