? ? ? ?MVC全名是Model View Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫,一種軟件設計典范,用一種業務邏輯、數據、界面顯示分離的方法組織代碼,將業務邏輯聚集到一個部件里面,在改進和個性化定制界面及用戶交互的同時,不需要重新編寫業務邏輯。MVC被獨特的發展起來用于映射傳統的輸入、處理和輸出功能在一個邏輯的圖形化用戶界面的結構中。
? ? ? ?MVC雖然給了我們一套使用參考方案,同時也應用的很多,但是,在使用的過程中會發現,如果用controller來整合model+view,那么,對于一些相應的業務處理邏輯,將會使得整個controller非常的擁擠,很多的時候,可能寫的代碼由于都擁擠在controller里面,造成閱讀方法時,非常不便,甚至,我看到有的同事,在一個controller里面寫上兩三千行的代碼,如果業務需要,還得更多,這是非常不好的風格。其實一個controller里的代碼,最好控制在500以內,盡量不要超過800行。
? ? ? ? 曾問過好幾個同事,你們對MVC怎么理解,以及覺得應該如何使用,回答的驚人一致,模型(model)-視圖(view)-控制器(controller),很官方的,其實也沒有錯,但是在談到使用的時候,他們更多只是在controller里面整合model+view,然后在里面寫各種交互,各種業務邏輯處理,于是乎,在查看他們的代碼中,就能經常看到動則兩三千行的代碼,這對后期維護是一個非常頭疼的問題,尤其是對于后期接手的人員,簡直等于謀殺,所以在我項目組里,我都要求他們去不斷的優化自己的代碼,爭取做到,單個controller類里不能超過800行,剛開始的時候,對他們來說,是件很煩瑣的事情,尤其是以前就沒有考慮過如何去做,于是我給他們提出方案,在原因的模式中,再添加一個專門處理業務邏輯的類,同時創建類方法進行處理。于是,controller里面的代碼量,呈直線下降,而且閱讀起來也方便很多。
學習是一種過程,我們在學習的過程中要善于發現不足,同時去尋找更有效的解決方法,交流才能進步,第一次寫文章,下篇寫最近一個項目中使用runtime搭建的一個高度解耦的框架,如有不同見解,歡迎留言!