設計模式在遊戲客戶端中的應用 一

2021-06-12 06:48:27 字數 1209 閱讀 9070

mvc不講了。說乙個非常有用的:策略模式。

策略模式的思想在設計模式裡面寫的非常清楚,概括下來就是將行為和行為的實現分離。在head 設計模式這本書裡面講的例子也非常容易理解,基本上可以直接搬到遊戲中來。

如圖:

在遊戲中,玩家,怪味,npc,坐騎,寵物,俠客等等,他們都是可以活動的物件,也有一些共同的行為,所以都可以由乙個基類派生出來,但是他們也有很多不同的行為,比如npc不能戰鬥,坐騎不能說話,等等。

策略模式為我們很好地解決了這個問題,方法如下:

1 將各個行為在基類做出相應的介面,比如上面圖章actor這個類擁有6個介面,移動,跳躍,跑動,談話,換裝,戰鬥。然後actor類用空的實現(什麼事情都不做)來實現這些介面。然後各個子類在繼承actor類時,就有了對所有介面的乙個空實現了。

2 分析各個子類需要的實現方式,分別實現為各個行為類,比如玩家需要跳躍,那麼實現乙個玩家跳躍類,在role物件初始化時,將這個跳躍類的物件複製給行為變數,這樣玩家就可以跳躍了;

下面貼一些偽**,幫助理解:

public class actor

}public class role : actor

}public class horse : actor

}public class npc : actor

}inte***ce talkinte***ce

inte***ce moveinte***ce

inte***ce fightinte***ce

public class defaulttalk : talkinte***ce

}public class defaultmove : moveinte***ce

}public class defaultfight : fightinte***ce

}public class npctalk : talkinte***ce

}public class normalmove : moveinte***ce

}public class horsemove : moveinte***ce

}public class rolefight : fightinte***ce

}

這樣的好處就有很多了,比如用基類的引用型別去呼叫各個子類物件的各個行為都可以正常工作了。

HTTP中的ETag在移動客戶端的應用

絕大多數移動客戶端在設計網路模組時,都會選用http作為客戶端和服務端通訊的網路協議。隨著業務的不斷發展以及使用者量的持續增長,整個客戶端的穩定性和效能會逐漸成為關注的焦點,其中網路的效能優化更是重中之重,本文介紹的 etag 快取技術,可以在快取資料的同時做到資料的實時更新,適用於對資料實效性要求...

vue cli與nuxt在客戶端中應用環境變數

小夥伴們在業務中肯定或多或少用的專案變數 像這種process.env.node env 我麼可以根據環境變數來區分開發環境以及進行一系列判斷操作,玩意但要知道process是node存在的環境物件,在客戶端是不存在這玩意的,那萬一我想在例如.vue等客戶端檔案用呢咋辦,別急,vue cli跟nux...

在服務端應用中如何獲得客戶端 IP

如果有x forwarded for的請求頭,則取其中的第乙個 ip,否則取建立連線 socket 的 remoteaddr。而x forwarded for基本已成為了基於 proxy 的標準http頭,格式如下,可見第乙個 ip 代表其真實的 ip,可以參考 mdn x forwarded fo...