從MVC模型看設計

來源:互聯網
上載者:User
 

從MVC模型看設計

一己薄劍 2007-06-02

我們知道MVC模型中Model、View、Controller之間的關係如下:

,在這個對象建立時要做的就是建立各個內部對象,然後註冊各個對象之間的關係,這種關係由他們之間的互動來決定,並且決定了在接受到使用者輸入時他們之間互動的複雜性與有效性。

那麼我們再看一下我們不用MVC模型,我們會如何處理上面三個對象之間的關係,如:

對比上面兩種關係圖,我們發現MVC模型的對象之間的互動關係更簡單一些,因為MVC中對象之間的互動是線性每個對象只有一個輸入一個輸出,而下面圖中的對象之間的關係是星形的,雖然除中心以外的對象的互動更加簡單了,但位於中心的對象的互動任務就十分繁重了,作為本身具有實際工作的對象,如果在給其增加額外的負擔,這會增加這個對象的複雜度,使其難以維護。所以綜合起來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.