Unity___设计模式总结
模板模式
子类可以继承父类的方法
单例模式
饿汉式
游戏一开始就加载
private static T instance =new T();
懒汉式
策略模式
可以参考Sort()函数或者说回调函数
在使用sort()函数时,当系统无法自动排序时需要传递一个比较类或者比较函数给方法;
观察者模式(事件中心)
事件源(触发事件的对象),接收者(接受事件的对象),事件作为观察者
event关键字
加上关键字后只能在类内部触发
状态模式
动画中常用与状态机
游戏中有普通用户模式,VIP模式...
备忘录模式
存档,做一个类将数据存起来
class storage;
List<storage> list;
中介者模式
解决模块之间交互的问题
游戏制作过程中一般会有一个全局的管理类比如GameManager,它可以管理所有的模块,比如音乐播放,场景切换....
迭代器模式(较少)
遍历一个容器,比如写了一个二叉树,然后写一个树的迭代器,将树遍历出来
工厂模式
常用于背包,将一些类集合在一个方法里面
外观模式 (和工厂雷同)
略
装饰器模式
在原有基础上增加功能
组合模式
解决继承关系复杂的问题,通过添加组件的方式
- 编写组件类
- 实体添加组件
命令模式
将数据封装成一个命令类(逻辑单位)中,常用于网络通信
比如发送技能时,发送一个技能命令给服务器
MVC模式
- MVC 中的 M 指的是业务模型而非数据模型。
- 理想情况下,所有的业务逻辑都应该抽象 Model 层。
- 理想情况下,控制层只是负责响应视图的事件和各个业务模型间的调度。
- 具体情况具体分析,若是严格的遵循2、3两点也有可能增加项目不必要的复杂度,事事无绝对。一切都以降低项目复杂度为最终目的。
Controller(Module模块/控制层)
控制数据流向模型对象,并在数据变化时更新视图
Model(Data数据/业务模型)
只包含数据,初始化,一些数据操作,查找。。。。提供一些接口供控制层使用
View(视图)
既持有Controller也有Model,需要更新View,能够初始化(一般由Module进行)
持有Controller为了给服务器发消息,持有数据是为了显示