>>>>>>>>>>>>>>>>>>>>>>>>>>长文预警>>>>>>>>>>>>>>>>>>>>>>>>
==========================基础系统=========================
▌1-1、游戏场景的转换——状态模式
定义:
让一个对象内部的行为随着内部状态的改变而变化,而该对象也像是换了类一样。
目的:
为了更改程序时不用修改switch中的大量语句,将switch语句用以下设计模式代替。
实现:
状态控制者:提供设置状态、更新状态的方法。相当于switch。
状态接口类:规定状态的通性。
状态实现类:具体的状态。相当于case。
使用:
在外部,先调用状态控制者的设置方法设置一个状态,再调用状态控制者的更新方法,更新可能会改变的状态。
应用:
角色AI:控制不同的行为。
连线状态:连线、连线中、断线。
关卡状态:开始、进行、结束、分数计算。
———————————————————————————————————————
▌1-2、游戏主要类——外观模式
定义:
为子系统定义一组统一的接口,这个高级的接口会让子系统更容易被使用。有点像汽车给驾驶员提供的仪表盘和操作按键。
目的:
将原本在场景中使用到的众多子系统,统一抽到一个新的类中封装,让子系统的使用变得统一简单。
实现:
外观者:包含子系统的初始化、更新方法,并提供操控界面。
子系统…:各个子系统的功能实现。
使用:
在外部,分别调用外观者的初始化、更新方法。
应用:
网络引擎:连线管理系统、信息时间系统、数据封包管理系统。
数据库引擎:增删查改等为子系统的封装。
———————————————————————————————————————
▌1-3、获取游戏服务的唯一对象——单例模式
定义:
确认类只有一个对象,并提供一个全局的方式来获取这个对象。
目的:
防止外部任意产生该对象造成的错误,并解决“快速使用该对象”的需求。
实现:
单例对象:先将该对象的构造方法设为私有,不让外界通过new初始化该对象。再提供一个私有静态的自身类型的变量,并提供该变量的公有静态getter方法,记得在合适的地方初始化该变量,这样只要调用会一直存在一个全局的该对象,该getter方法一般被重命名为instance。
使用:
在外部,调用该对象的返回该对象的getter方法。
应用:
网络在线客户端:限制连接数。
日志工具:方便开发者快速调用进行调试。
注意:
尽量少用单例模式,因为不仅很多时候可以用其他方法满足“快速使用对象”和”限制对象个数“的要求,还会遇到一定程度上违反面向对象理念、继承拓展有很大的困难、长时间不用可能会被垃圾回收、多线程环境下可能会实例化多个对象的问题。
———————————————————————————————————————
▌1-4、游戏内各系统的整合——中介者模式
定义:
定义一个接口用来封装一群对象的互动行为。中介者通过移除对象之间的引用,来减少他们之间的耦合度,并且能改变它们之间的互动独立性。有点像快递公司移除了用户间的来往,它替用户来往。
目的:
解决各个子系统之间互相依赖的问题,避免维护困难。将子系统之间的引用转移到名为中介者的类上去。
实现:
中介者接口:定义一个消息传递方法,用于接收消息,然后经过