我眼中的MVC

這周五在改動遊戲中的一個UI 界面的時候出了一個小bug,在組隊界面踢人和加人操作后,這個隊伍裏面的隊長有可能發生變化,如果隊長自己退出了隊伍的話,那麼系統自動指定下一個人爲隊長。但是我在寫這個隊伍界面邏輯的時候犯了一個錯,我在lua 腳本中保存了一個變量 isTeamLeader ,剛打開這個界面的時候這個值是對的,但是在有人從隊伍裏面退出的時候忘記要去更新這個變量的值,導致這個變量還是原來的值。

後面想了想,導致這個bug的主要原因還是因爲粗心大意,但同時也想到了有關如何寫好界面邏輯的問題,就在這裏記錄下吧。

還記得當初上學的時候,有一門軟件開發實踐的課程,期末考試要寫一個XX管理系統 ,於是就有了conniestore 這個rep,但是最後老師檢查的時候被批評了一頓,原因就是沒有將業務邏輯和界面類分開,沒有實體類來表示數據庫中的對象。後來過了一段時間后,我才知道了一個叫做 MVC 的設計模式,估計課堂上是有講過,但是我沒怎麼去上課,好可惜 😞

現如今,在當前公司裏經歷了上一個卡牌類的遊戲開發,到現在的MOBA類遊戲開發,也發現了一個比較好的MVC 的做法。具體來說就是CS共同有一個實體類,就是Model,將業務類型抽象成一個個的Model,界面類就是View,這個不用多說,Control 就是CS通信的橋樑,消息的上發和下發都是在這裏。於是View 的改變可以通知到Model 或者 Control 去做某些事情,Control通知Model 修改數據,從而引起相應的View 發生改變。

PS. 在知乎上面看到有人介紹 uFrame-MVVM ,希望過一段時間能看看它的代碼

Update: 6.13

看了下知乎上的介绍,基本上和我的理解没什么差别,于是没有兴趣看源代码了