從MVC模型看設計

2021-04-13 02:02:50 字數 1343 閱讀 3594

從mvc

模型看設計

一己薄劍

2007-06-02

我們知道mvc模型中model、view、controller之間的關係如下:

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

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

對比上面兩種關係圖,我們發現

mvc模型的物件之間的互動關係更簡單一些,因為

mvc中物件之間的互動是線性的每個物件只有乙個輸入乙個輸出,而下面圖中的物件之間的關係是星形的,雖然除中心以外的物件的互動更加簡單了,但位於中心的物件的互動任務就十分繁重了,作為本身具有實際工作的物件,如果在給其增加額外的負擔,這會增加這個物件的複雜度,使其難以維護。所以綜合起來

mvc模型是簡化了物件之間互動的複雜度,使得他們之間的互動更易控制。

所以有上面的分析對比可以知道,設計的兩大原則:一:物件的抽象簡化;二:物件之間關係的抽象簡化。關於物件的抽象簡化是做好設計的基礎,物件抽象的好,組織的好,更容易簡化物件之間的關係。那麼設計一般先要分析抽象出最直接的物件,然後為了提高重用性,再細分出最基本的物件,然後在對基本的物件進行封裝,簡化物件的易用性,並且形成清晰的物件層次結構,到此靜態的物件已經建立,接下來就是處理物件之間的關係,這一步對於物件的層次結構是有一定依賴的,物件之間的關係,

以線性關係最為簡單,所以最好能夠把物件之間的關係組織成線性的,但是不是所有情況都可以做到,但一般的原則,具體有自己功能的物件不該過多加入處理物件關係的功能,所以這種物件應該盡量放到線性關係中,而應該把物件之間的關係的處理再抽象出乙個新的物件來專門負責,讓每個參與互動的物件只直接和這個物件互動,這樣每個具體的物件都是功能單一,互動單一,而這個新的物件他的職責就是負責互動,所以他也是功能單一。其實這就是星形的互動關係。這也說明星形的未必不如線性的。

只是不同的場合要用不同的模型,目的只有相同的乙個-降低複雜度,增加靈活性。

所以有上面可以看出設計的目的就是用最簡單的,最靈活的方法實現最強大的功能。

簡單就是容易維護,容易實現;靈活就是容易應付不同的需求;強大的功能就是不限制未來一些新的需求的實現即可擴充套件性。

總結,設計的關鍵在於物件的處理,物件之間關係的處理,並且二者之間是相互影響的,在設計需要通盤考慮,而設計的目的則在於降低複雜度,增加靈活性。

從攻擊看設計

前幾天,我們的站點的速度忽然慢了下來,接著發生了當機,重新啟動後最初訪問不錯,不久又慢了下來,資料庫伺服器方面沒有顯示有什麼巨大壓力,並且在 根目錄下建立乙個靜態檔案,居然訪問速度也奇低,由於 最近正在更新,所以懷疑是不是邏輯有什麼問題,然而和同事交流發現最近並沒有更新關鍵的邏輯,在排除這種可能性後...

從設計角度分析MVC

ps 原來寫文章是從來也不寫提綱的,現在通過不斷的設計訓練和 注釋的影響,沒提綱就寫不下去了 言歸正傳,mvc作為一種軟體設計模式,它用一種業務邏輯 資料和介面顯示互相分離的方法組織 將業務邏輯單獨封裝,使得在介面及與使用者互動的形式改變時不影響到邏輯。1 模式簡介 mvc是一種建立web應用程式的...

從MVC理解設計模式

size x large 本文將透過mvc來幫助我們理解 模式 這一術語的含義。mvc包含三類物件。模型model是應用物件,檢視view是它在螢幕上的標示,控制器controller定義使用者介面對使用者輸入的相應方式。不使用mvc,使用者介面設計往往將這些物件混在一起,而mvc則將它們分離以提高...