這篇文章的知識(shí)點(diǎn)包括:手游mvc框架的簡(jiǎn)介、手游mvc框架的事件機(jī)制、依賴關(guān)系的介紹以及手游mvc框架的簡(jiǎn)單實(shí)用,閱讀完整文相信大家對(duì)手游mvc框架有了一定的認(rèn)識(shí)。
創(chuàng)新互聯(lián)是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),虛擬空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,
遂寧聯(lián)通機(jī)房,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國(guó)大陸、港澳臺(tái)以及歐美等多個(gè)國(guó)家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。
一 、分工
這里的mvc,m代表model(數(shù)據(jù)模型),v代表view(界面),c代表control(控制業(yè)務(wù)邏輯)。除此之外,mvc一般必須要實(shí)現(xiàn)的是事件機(jī)制或者觀察者模式。
1.view的職責(zé)包括
a. 顯示數(shù)據(jù)。這里的數(shù)據(jù)可以分為簡(jiǎn)單數(shù)據(jù)(不用處理的)和需要處理的數(shù)據(jù)。也可分為只顯示一個(gè)系統(tǒng)的數(shù)據(jù)和顯示多個(gè)系統(tǒng)的數(shù)據(jù)。這個(gè)在后面討論到依賴關(guān)系和例子的時(shí)候,會(huì)詳細(xì)說到。
b.更新顯示的數(shù)據(jù),通過監(jiān)聽事件。
c.接收玩家的輸入,并將輸入交給control進(jìn)行處理。
- control的職責(zé)包括:
a.組織view上的數(shù)據(jù)。
b.接收view傳過來的玩家輸入,自己根據(jù)需求做必要的業(yè)務(wù)邏輯處理。這些業(yè)務(wù)邏輯包括彈出其他界面或者提示,更新某些界面(一般通過事件機(jī)制通知),調(diào)用一個(gè)或多個(gè)model的方法進(jìn)行各自的處理等。
c.control是作為一個(gè)中介者,即view和model不能有耦合,而是通過control這個(gè)中介者進(jìn)行交互。 - model的職責(zé)包括:
a.保存數(shù)據(jù)。一般包括服務(wù)器的數(shù)據(jù),和其他一些需要用到的數(shù)據(jù)。
b. 跟服務(wù)器進(jìn)行通信,當(dāng)服務(wù)器的信息有變化時(shí),需要發(fā)送事件通知view或control。也有一些看法是要把這部分的邏輯放在control里面,但是我覺得這是跟數(shù)據(jù)密切相關(guān)的,所以應(yīng)該放在model這里處理。
c. 根據(jù)control的輸入(源自玩家的輸入或者control處理過的數(shù)據(jù)),做對(duì)應(yīng)的邏輯,例如跟服務(wù)器通信或者根據(jù)需求更新自己的數(shù)據(jù)。
d.當(dāng)數(shù)據(jù)變化的時(shí)候,要通知view或者control。
二、事件機(jī)制。
mvc中必須要實(shí)現(xiàn)的是事件機(jī)制或其他方式實(shí)現(xiàn)的觀察者模式。事件機(jī)制使得mvc之間可以大大的解耦,因?yàn)榘l(fā)送事件的一方和接收事件的一方,完全不需要知道對(duì)方的存在。
- view 可以監(jiān)聽事件和發(fā)送事件。
- control 同樣可以監(jiān)聽事件和發(fā)送事件。
- model 只可以發(fā)送事件。
三、依賴關(guān)系
mvc之間的依賴關(guān)系很少被文章或者人們談?wù)摚彩谴蠹彝惶⒁獾牡胤?,但是這是及其重要的。
依賴關(guān)系的討論包括:view與view,view與control,view與model,control與control,control與model,model與model。
- view與view。view與view之間不應(yīng)該有任何的依賴關(guān)系。但是一個(gè)界面可以通過發(fā)送事件來通知另一個(gè)界面進(jìn)行更新。
- view與control。一個(gè)view一般只會(huì)依賴于一個(gè)control,一個(gè)control可以被多個(gè)view依賴。
- view與model。雖然mvc的實(shí)質(zhì)是,通過view去顯示和更新model的數(shù)據(jù),但是view和model之間不應(yīng)該有依賴關(guān)系。對(duì)于簡(jiǎn)單數(shù)據(jù)(可直接用的),view可通過自己依賴的control(control一開始可依賴一個(gè)model)上面的model引用,直接拿取該model里面的數(shù)據(jù)。對(duì)于需要處理的數(shù)據(jù),一般都通過view所依賴的control的依賴方法來獲取到自己想要的數(shù)據(jù)。
- control與control。control與control之間一般不要有依賴關(guān)系,就算有,也應(yīng)該謹(jǐn)慎的考慮是否必要。
- control與model。control可依賴多個(gè)model,但是model不應(yīng)該依賴于control。在某些情況下,一個(gè)view可能需要展示多個(gè)系統(tǒng)的數(shù)據(jù)或者與多個(gè)系統(tǒng)的數(shù)據(jù)進(jìn)行交互,這個(gè)時(shí)候,可以新建一個(gè)新的control,這個(gè)control作為中介者與多個(gè)model進(jìn)行交互。
- model與model。model絕對(duì)應(yīng)該是獨(dú)立的,model與model之間不應(yīng)該有任何的依賴關(guān)系。
四、實(shí)現(xiàn)細(xì)節(jié)
- view用ViewManager管理起來,ViewManager要保存一個(gè)字典,key是view的名字,value是view的實(shí)例。control用ControlManager管理起來,ControlManager要保存一個(gè)字典,key是control的名字,value是control的實(shí)例。model用ModelManager管理起來,ModelManager要保存一個(gè)字典,key是model的名字,value是model的實(shí)例。ViewManager、ControlManager、ModelManager可以再通過外觀模式進(jìn)行進(jìn)一步的封裝,即規(guī)定系統(tǒng)不直接調(diào)用ViewManager、ControlManger、ModelManager的接口,而只能調(diào)用他們的外觀類App的方法。
- mvc之間的依賴關(guān)系盡量只依賴于名字,而不要依賴于具體的實(shí)例。以view和control之間的依賴舉例。我見過的一些項(xiàng)目會(huì)這樣處理他們的依賴關(guān)系。
這樣的實(shí)現(xiàn),就把依賴關(guān)系變?yōu)関iew的實(shí)例依賴于control的實(shí)例。這樣的話,如果view的實(shí)現(xiàn)一樣,只是需要依賴不同的Control,那么在重用的時(shí)候,可能需要復(fù)制一份同樣的代碼。比這個(gè)更好一點(diǎn)的處理方法是在構(gòu)造函數(shù)里面指定自己的control實(shí)例:
這是一種比較的實(shí)現(xiàn)方式,當(dāng)發(fā)生前面的那種情況的時(shí)候,只需要新建一個(gè)類繼承這個(gè)類,然后重寫setControl方法。
但是更好的處理方法應(yīng)該是下面的這種,只依賴于名字:
這樣,control的名字通過構(gòu)造函數(shù)注入。當(dāng)發(fā)上上面的需求的時(shí)候,只需要增加一個(gè)另外的view的配置即可。 - view的顯示問題。view需要顯示數(shù)據(jù)可分為:
a.簡(jiǎn)單數(shù)據(jù)(不用處理的)。對(duì)于這種情況,可以直接通過control的model引用來獲取。例如componetA.text = myControl.model.dataA。
b.需要處理的數(shù)據(jù)(排序或者數(shù)據(jù)不能直接顯示,需要轉(zhuǎn)換)。這種情況會(huì)通過control的一個(gè)方法獲取。例如componetA.text = myControl.getDataA()。
看完上述內(nèi)容,你們對(duì)手游mvc框架有進(jìn)一步的了解嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝各位的閱讀!
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
網(wǎng)頁(yè)標(biāo)題:手游mvc框架介紹-創(chuàng)新互聯(lián)
標(biāo)題網(wǎng)址:
http://weahome.cn/article/giepi.html