重構--去除丑陋的switch語句


最近幾天,在進行重構的時候,遇到了一個極其丑陋的代碼(自己寫的 /捂臉  當時時間緊,於是。。。。),今天去重構的時候無論如何也想不出方法,去除這個丑陋的switch語句

,於是寫篇博客,讓自己記住這個問題 。

 switch (status)
            {
                case 0:
                    return View("Create", applyBlog);
                case 1:
                    return View();
                case 2:
                    return View("PersonalBlogPage");
                case 3:
                    return View("Create", applyBlog);
                default:
                    return View();
            }

這就是那個丑陋的switch語句。網上好多帖子去除switch語句的時候,用的是反射+多態,可是這兩個我都用的挺熟的呀。估計是沒理解吧。先把問題放在這里。

今天在博客園提問了一下,得到了一個極其精明的的答案

class  Response{ 

  public void View(){    

  }

}

View0 extends Response{

  string str0 = "Create";

  string applyBlog;

  public void View(){

       str0 = "done";

     applyBlog = "done too";

  }

View1 extends Response{ 

  public void View(){    

    //do something...

  }

}

View2 extends Response{

  string str2 = "PersonalBlogPage";

  

public void View(){

       ComFun.Dosomething(str2);

    //do something...

  } 

}

 

/* 反射,通過類的名字 */

Class c = Class.forName("View"+status);

/* 實例化對象 */

Response r = (Response) c.newInstance();

/* 多態完成具體的View()調用 */

r.View();

這是答主用Java寫的用反射+多態實現去除switch語句的方法,感覺他的這個思路好奇特呀,他奇特之處在於用status的不同值代表了不同的類名,直接用反射獲取類。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM