第
Unity游戏开发中必备的设计模式之外观模式详解
目录一、外观模式定义二、外观模式说明三、实现游戏主程序1、游戏主架构设计2、实现说明3、使用外观模式的优点四、结论
一、外观模式定义
外观模式(Facade)在GoF中的解释:为子系统定义一组统一的接口,这个高级接口会让子系统更容易被使用。
所以,外观模式的重点在于,它能够将系统内部的互动细节隐藏起来,并提供一个简单方便的接口。
二、外观模式说明
示意图表示:整合子系统并提供一个高级的界面让客户端使用。
其中的参与者具体说明:
client(客户端、用户)
从原本需要操作多个子系统改为只需要面对一个整合后的界面。
subSystem(子系统)
原本会由不同的客户端(非同一系统相关)来操作,改为只会由内部系统之间交互使用。
Facade(统一对外的界面)
整合所有子系统的接口及功能,并提供高级界面(或接口)供客户端使用。
接受客户端的信息后,将信息传送给负责的子系统。
具体来说,外观模式可以让客户端使用简单的界面来操作一个复杂的系统,并且减少客户端要与之互动的系统数量,让客户端能够专心处理与本身有关的事情。
三、实现游戏主程序
1、游戏主架构设计
2、实现说明
子系统对外接口类-PBaseDefenseGame
///summary
///Describe:整合所有子系统的接口及功能
////summary
publicclassPBaseDefenseGame
//使用单例
privatestaticPBaseDefenseGame_instance;
publicstaticPBaseDefenseGameInstance
if(_instance==null)
_instance=newPBaseDefenseGame();
return_instance;
//场景状态
privateboolm_bGameOver=false;
//游戏系统
privateGameEventSystemm_GameEventSystem;
privateCampSystemm_CampSystem;
privateStageSystemm_StageSystem;
///summary
///初始化
////summary
publicvoidInitinal()
m_bGameOver=false;
//游戏系统
m_GameEventSystem=newGameEventSystem(this);
m_CampSystem=newCampSystem(this);
m_StageSystem=newStageSystem(this);
//...
//释放系统游戏
publicvoidRelease()
//游戏系统
m_GameEventSystem.Release();
m_CampSystem.Release();
m_StageSystem.Release();
m_CharacterSystem.Release();
//...
///summary
///更新
////summary
publicvoidUpdate()
//游戏系统更新
m_GameEventSystem.Update();
m_CampSystem.Update();
m_StageSystem.Update();
//...
//游戏状态
publicboolThisGameIsOver()
returnm_bGameOver;
//...
}
战斗状态类调用Facade接口
///summary
///Describe:战斗场景
////summary
publicclassBattleState:ISceneState
publicBattleState(SceneStateControllerController):base(Controller)
this.StateName=BattleState;
//开始
publicoverridevoidStateBegin()
PBase