PHP項目感悟 -- 從CI架構來看iOS的MVC

來源:互聯網
上載者:User

標籤:

      其實這幾天一直都想找時間把這個感悟整理出來,也是這一段一直思考的問題,因為這一段參加一個PHP後台項目的開發,架構使用的是CI,隨著項目的進展,對於CI接觸的也越多,但是由於理解的可能並不深刻,我也只是看到了我所看到的,所以如果有不對的地方,歡迎給出意見和指正。

      這幾天接觸CI架構,發現它的MVC模式運用的如此清晰簡潔,完全按照MVC的分別組織模組,而且Model、View與Controller的互動只要調用方法就可以,如果有大量互動,Controller裡的方法數量或許會增多,但也可以分模組的剝離來簡化Controller,不過,這種方法數量的增多並不會造成Controller的臃腫,因為使用者和介面相關的互動都在view中用JS動態完成,而Model的修改,controller也就是調用Model傳參,View在向controller的主動互動中好像並沒有受到限制,而目前我知道Model可以返回資料給Controller,但還不知道怎麼主動調用Controller。不過這種單一流程的簡潔性起初就已經讓我驚訝了一把。雖然MVC模式的含義在哪裡都是一樣的,但運用的不同和語言架構的不同卻會導致不同的結果和影響,比如iOS中MVC的互動裡就限制了View和Model主動向controller的互動,並不是不能,只是做了一層限制,controller可以自由調用View和Model,傳參最簡單的方式就是屬性傳值,而如果一個View有了使用者操作後想要調用controller就不會那麼容易了,不過代理可以解除這個問題,只是代理委託模式再清晰,最後互動的主體操作都是在controller裡;而Model如果又發生改變又想要congtroller做出回應,就更不容易了,KVO模式和通知的使用也可以解決,但這一層限制是避免不掉的。

      從CI來看,View層並不只是顯示,使用者互動操作留在View裡或許可以讓controller不至於那麼臃腫,而MVC下Controller的臃腫卻是iOS架構模式中一直在討論的問題,但是如果把一部分使用者操作的響應直接放在View層也會有問題,很多時候View層可以接收使用者操作,但如果不和Model溝通是無法響應的,還是避免不掉通過controller,那麼到底應該從哪裡入手呢,我最後的想法是,應該是Model,也許Model並不是只能作為一個資料內容的展示,如果給它必要的方法,也許可以協助Controller分擔一部分的工作,但這畢竟是有限的。

       其實我以前也一直認為iOS裡如果將controller的內容進行模組劃分,是可以降低controller的冗餘的,如果現在再給Model分擔一部分內容,冗餘程度會更低一些,但是終究是無法達到CI的這樣簡潔,而因為對controller冗餘問題的討論也誕生了MVVM,只是我對這種模式的運用並不能很熟練,只是知道大概是怎麼個情況,而且目前的MVVM模式也不像MVC那麼的成熟,精簡controller估計會是要一直進行的一個討論了。

PHP項目感悟 -- 從CI架構來看iOS的MVC

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.