中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

手游mvc框架介紹

發布時間:2020-06-01 11:05:24 來源:億速云 閱讀:316 作者:Leah 欄目:游戲開發

這篇文章的知識點包括:手游mvc框架的簡介、手游mvc框架的事件機制、依賴關系的介紹以及手游mvc框架的簡單實用,閱讀完整文相信大家對手游mvc框架有了一定的認識。

一 、分工
這里的mvc,m代表model(數據模型),v代表view(界面),c代表control(控制業務邏輯)。除此之外,mvc一般必須要實現的是事件機制或者觀察者模式。
1.view的職責包括
a. 顯示數據。這里的數據可以分為簡單數據(不用處理的)和需要處理的數據。也可分為只顯示一個系統的數據和顯示多個系統的數據。這個在后面討論到依賴關系和例子的時候,會詳細說到。
b.更新顯示的數據,通過監聽事件。
c.接收玩家的輸入,并將輸入交給control進行處理。

  1. control的職責包括:
    a.組織view上的數據。
    b.接收view傳過來的玩家輸入,自己根據需求做必要的業務邏輯處理。這些業務邏輯包括彈出其他界面或者提示,更新某些界面(一般通過事件機制通知),調用一個或多個model的方法進行各自的處理等。
    c.control是作為一個中介者,即view和model不能有耦合,而是通過control這個中介者進行交互。
  2. model的職責包括:
    a.保存數據。一般包括服務器的數據,和其他一些需要用到的數據。
    b. 跟服務器進行通信,當服務器的信息有變化時,需要發送事件通知view或control。也有一些看法是要把這部分的邏輯放在control里面,但是我覺得這是跟數據密切相關的,所以應該放在model這里處理。
    c. 根據control的輸入(源自玩家的輸入或者control處理過的數據),做對應的邏輯,例如跟服務器通信或者根據需求更新自己的數據。
    d.當數據變化的時候,要通知view或者control。

二、事件機制。
mvc中必須要實現的是事件機制或其他方式實現的觀察者模式。事件機制使得mvc之間可以大大的解耦,因為發送事件的一方和接收事件的一方,完全不需要知道對方的存在。

  1. view 可以監聽事件和發送事件。
  2. control 同樣可以監聽事件和發送事件。
  3. model 只可以發送事件。

三、依賴關系
mvc之間的依賴關系很少被文章或者人們談論,也是大家往往不太注意的地方,但是這是及其重要的。
依賴關系的討論包括:view與view,view與control,view與model,control與control,control與model,model與model。

  1. view與view。view與view之間不應該有任何的依賴關系。但是一個界面可以通過發送事件來通知另一個界面進行更新。
  2. view與control。一個view一般只會依賴于一個control,一個control可以被多個view依賴。
  3. view與model。雖然mvc的實質是,通過view去顯示和更新model的數據,但是view和model之間不應該有依賴關系。對于簡單數據(可直接用的),view可通過自己依賴的control(control一開始可依賴一個model)上面的model引用,直接拿取該model里面的數據。對于需要處理的數據,一般都通過view所依賴的control的依賴方法來獲取到自己想要的數據。
  4. control與control。control與control之間一般不要有依賴關系,就算有,也應該謹慎的考慮是否必要。
  5. control與model。control可依賴多個model,但是model不應該依賴于control。在某些情況下,一個view可能需要展示多個系統的數據或者與多個系統的數據進行交互,這個時候,可以新建一個新的control,這個control作為中介者與多個model進行交互。
  6. model與model。model絕對應該是獨立的,model與model之間不應該有任何的依賴關系。

四、實現細節

  1. view用ViewManager管理起來,ViewManager要保存一個字典,key是view的名字,value是view的實例。control用ControlManager管理起來,ControlManager要保存一個字典,key是control的名字,value是control的實例。model用ModelManager管理起來,ModelManager要保存一個字典,key是model的名字,value是model的實例。ViewManager、ControlManager、ModelManager可以再通過外觀模式進行進一步的封裝,即規定系統不直接調用ViewManager、ControlManger、ModelManager的接口,而只能調用他們的外觀類App的方法。
  2. mvc之間的依賴關系盡量只依賴于名字,而不要依賴于具體的實例。以view和control之間的依賴舉例。我見過的一些項目會這樣處理他們的依賴關系。
    手游mvc框架介紹
    這樣的實現,就把依賴關系變為view的實例依賴于control的實例。這樣的話,如果view的實現一樣,只是需要依賴不同的Control,那么在重用的時候,可能需要復制一份同樣的代碼。比這個更好一點的處理方法是在構造函數里面指定自己的control實例:
    手游mvc框架介紹
    這是一種比較的實現方式,當發生前面的那種情況的時候,只需要新建一個類繼承這個類,然后重寫setControl方法。
    但是更好的處理方法應該是下面的這種,只依賴于名字:
    手游mvc框架介紹
    這樣,control的名字通過構造函數注入。當發上上面的需求的時候,只需要增加一個另外的view的配置即可。
  3. view的顯示問題。view需要顯示數據可分為:
    a.簡單數據(不用處理的)。對于這種情況,可以直接通過control的model引用來獲取。例如componetA.text = myControl.model.dataA。
    b.需要處理的數據(排序或者數據不能直接顯示,需要轉換)。這種情況會通過control的一個方法獲取。例如componetA.text = myControl.getDataA()。

看完上述內容,你們對手游mvc框架有進一步的了解嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴马| 镇江市| 兴安县| 得荣县| 福泉市| 华蓥市| 增城市| 上杭县| 兰西县| 盘山县| 灯塔市| 青川县| 石楼县| 屏山县| 汾阳市| 马龙县| 武邑县| 寿光市| 双辽市| 禹州市| 横山县| 哈密市| 盘锦市| 大连市| 多伦县| 上饶县| 安吉县| 仙桃市| 漳州市| 栾川县| 松溪县| 霍州市| 友谊县| 鄂伦春自治旗| 梧州市| 名山县| 成武县| 永嘉县| 玛纳斯县| 会理县| 邹平县|