以知乎為例子來說明MVC是個啥

2021-08-16 04:34:10 字數 992 閱讀 2207

記得當時了解web開發的mvc(model-view-controller)模式後,有一種心血噴湧的感覺,覺得太有意思了(程式設計師別噴,我就是這麼沒見過世面)。我們以知乎為例子來說明mvc是個啥:

每個人的主頁都是相同的布局和風格,例如最上面的選單搜尋欄,顏色分割,左邊顯示動態等,右邊是個人資訊等,然後具體的內容卻因人而異—每個人的頭像,名字,動態都是不一樣的。那麼知乎是如何保證每乙個人看到的都是自己的主頁呢?

你可以把這個相同的布局想象成乙個模板,裡面有乙個個空格子,當你用你的賬戶登陸頁面時,想象你的電腦裡有無數個小人根據你的賬號從知乎後台的資料庫裡取出你的頭像,動態,認證資訊等等內容,然後對應著模板上規定好的位置,把對應的內容填進去。這些小人的動作實在是太快了,以至於你覺得這是在瞬間完成的。

上面所說的模板就是mvc中的v,是view的縮寫,負責顯示。這樣做的好處在於,如果知乎有一天突然想改變一下個人主頁的風格,那麼只需要改變這乙個模板,然後幾千萬註冊使用者的主頁就相應的變化了,因為模板是公用的,是不是省了很多事情?(早期的web開發可不是這樣喲,你可能要乙個個使用者去改,非常麻煩。)

而這些小人除了擺放內容,它們真正負責的是業務邏輯,我們把他們叫做controller,也就是mvc中的c。例如當你登陸的時候,這些小人要檢查你的使用者名稱是不是準確的,如果準確,它們要去資料庫裡取出你請求的資訊等,如果使用者名稱錯誤,它們要攔截住你的登陸。它們的職責還有很多,無法一一枚舉。在實際中,這些小人做的事情其實就是python(或者其它指令碼語言)做的事情。

這樣做的好處是什麼呢?雖然你最終在瀏覽器裡看到的是乙個完整的頁面,但是在後端邏輯上它們都是區分開的——模型(m),檢視(v)和控制器(c)的區分就保證了較高的可維護性——我可以隨時修改主頁的顯示並看到效果,同樣我可以隨時加入一些業務邏輯。

簡單來說,mvc指controller控制器根據不同情況獲取model資料,處理後傳給view模板進行顯示。

以StringCallback為例子

class mystringcallback extends stringcallback 連線成功,伺服器返回資料方法,s為獲得的資料 override public void onresponse string s,int i 返回進度的方法 override public void inpro...

咦,孰為汝多知乎

號稱健壯異常的linux,只要將目錄 usr bin 的擁有者,由 root 轉移為 當前使用者,那麼這個sudo就壞掉了,再也無法使用 leftfist localhost sudo chown r user usr bin sudo password for leftfist leftfist ...

使用C 中的ref關鍵字,用2個簡單例子來說明

在c 中,如果在方法引數前面加上ref關鍵字,說明引數傳遞的是引用,而不是值。如何理解呢?引數是簡單型別的例子 static void main string args private static void change string temp private static void change...