《游戲編程模式》筆記——類型對象
意圖
創(chuàng)建一個類A來允許靈活的創(chuàng)建新“類型”,類A的每個勢力都代表了不同的對象類型。
模式
定義類型對象類和有類型的對象類。每個類型對象實例代表一種不同的邏輯類型。每種有類型的對象保存對描述它類型的引用。
何時使用
不知道后面還需要什么類型的情況下。
修改或添加新類型不想改變代碼或者重新編譯。
個人理解,這一章主要講的是面向數(shù)據(jù)。
假設我們制作一款RPG游戲,有各種各樣的敵人,我們不應該定義一個?Enemy?基類,用?Goblin 類和?Slime 類繼承,再編寫各自的行為。
我們除了?Enemy?類中,再編寫一個?EnmeyData?類,作為前者的成員變量,這個數(shù)據(jù)類作為類型對象,用來描述這個敵人類型,包括但不限于敵人的名字、最大血量、攻擊力等信息,甚至敵人的簡單 AI?也可以寫在里面,Enemy?類通過數(shù)據(jù)類提供的數(shù)據(jù)來表現(xiàn)成對應的敵人。
設計決策
類型對象是封裝的還是暴露的?
有類型的對象是如何創(chuàng)建的?
能改變類型嗎?
支持何種繼承?
參考
《游戲編程模式》
標簽: