内容会持续更新,有错误的地方欢迎指正,谢谢!

设计模式存在的意义:大多数是为了保证“低耦合高内聚

1.单例模式

一个类只能有一个实例,单例非常重要经常用,比如游戏页面管理,现在我要关闭某个页面,页面上的很多子窗口也需要一起关闭。单例模式一般用于控制类脚本,也就是xxxController、xxxManager等。

//C#代码
public class Singleton
{  //关键点0:构造函数是私有的,以防止对象通过构造函数被构造private Singleton() {}                     private static Singleton single = null;    //关键点1:声明单例对象是静态的private static object obj= new object();   //lock住引用对象obj才是互斥锁//静态方法内必须使用静态变量,所以上面两个变量要声明为静态的public static Singleton GetInstance()      //通过静态方法来构造对象{                        if (single == null)                   //关键点2:判断单例对象是否已经被构造{                             lock(obj)                          //关键点3:加线程锁{if(single == null)              //关键点4:二次判断单例是否已经被构造{single = new Singleton();  }}}    return single;  }
}

2.观察者模式

也就是发布—订阅者模式,常用于消息的分发,也就是说,发布者发布消息的话,全部订阅者可以同时收到消息。例子:玩家一旦升级,就需要同时更新很多信息,这时候就可以用观察者模式。

3.MVC模式

数据-控制-显示分离的方式 使游戏的结构清晰化,逻辑更明了。
控制器:(计算数据)处理和界面无关的代码逻辑,接受和处理网络数据。
模型:保存数据,发送数据更新信息。
视图:接受用户在界面上的操作,根据模型层的数据显示相应的界面。
控制器都是单例,模型就是数据,被控制器管理,而视图可由模型通过视图工厂来创建。

4.工厂模式

1.简单工厂模式:有一种swith—case的感觉,例子:给参数1就生产因特尔单核处理器,给参数2就生产AMD单核处理器。

2.工厂模式:加了一个单核处理器工厂类,生产哪种单核处理器,不再由参数决定,而是用户直接调用,例子:AMD单核处理器工厂类.生产单核处理器()

3.抽象工厂:也就是不仅生产单核处理器,还同时生产多核处理器。
举例:
AMD处理器工厂类名.生产单核处理器(),则生产AMD单核处理器;
AMD处理器工厂类名.生产多核处理器(),则生产AMD多核处理器;

抽象工厂模式在游戏中的实际应用:
假设有中文和英文两种语言,当用户更换语言时,会改变文字的显示和音效等组件。
具体情况:有一个语言父类,分别有中文和英文这两个子类;还有文字显示和音效这两个父类,其中,中文的文字显示类和英文的文字显示类分别继承自文字显示类,中文的音效类和英文的音效类分别继承音效类。调用方式举例:中文子类名.中文文字显示()。

5.中介者模式


各个子系统之间错中复杂的进行交互,使用中介者模式很好的避免了这种问题,也就是我们开发游戏的时候写的那个GameManager脚本的作用。

可将各个子系统类解耦,使得各个系统对象独立而易于复用,但中介者承担了较多的责任。

游戏中常用的设计模式相关推荐

  1. 游戏中常用的设计模式总结

    Design Pattern Summary 一.概述 1.什么是设计模式? 每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重 ...

  2. Java开发中常用的设计模式-单例模式

    单例(Singleton)模式的定义:指一个类只有一个实例,且该类能自行创建这个实例的一种模式. Java开发中常用的设计模式-单例模式 单例模式有3个特点: 单例类只有一个实例对象: 该单例对象必须 ...

  3. 游戏中常用的伪随机算法之PRD暴击算法

    游戏中常用的伪随机算法之PRD暴击算法 PRD伪随机算法常用于游戏中的暴击算法,因此本文的标题将其称为 PRD暴击算法. 诞生与应用 PRD算法诞生与<魔兽争霸3>,可以说其诞生就是为了解 ...

  4. 游戏开发中常用的设计模式 【game design patterns】

    单例模式(Singleton Pattern):用于确保在游戏中只存在一个实例,例如游戏管理器(Game Manager)或资源管理器(Resource Manager). 工厂模式(Factory ...

  5. 游戏引擎开发中常用的设计模式

    仅仅因为你知道编程语言的语法,不足以让你成为一个程序员.我讨厌这么对你说,但它确实是真的.什么知识将会使你成为一个真正的程序员呢?答案是数据结构,算法和设计模式的知识.语言的语法与知道字母表同义.任何 ...

  6. 游戏开发中常用的设计模式

    使用设计模式来提高程序库的重复利用性是大型程序项目开发必须的.但是在"四人帮"的设计模式概述中提到了23种标准设计模式,不但难以记住,而且有些设计模式更多的适用于应用程序开发,对游 ...

  7. 学习笔记【Spring中常用的设计模式】

    文章目录 简介 一. Spring用到的设计模式类别 1. 创建型模式 2. 结构性模式 3. 行为型模式 二. 设计模式详解 1. 工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 1.3 抽象 ...

  8. 游戏中常用的寻路算法的分享(3):A*算法的实现

    概述 剥除代码,A* 算法非常简单.算法维护两个集合:OPEN 集和 CLOSED 集.OPEN 集包含待检测节点.初始状态,OPEN集仅包含一个元素:开始位置.CLOSED集包含已检测节点.初始状态 ...

  9. 游戏中常用的寻路算法(6):地图表示

    在本系列文档大部分内容中,我都假设A*用于某种网格上,其中的"节点"是一个个网格的位置,"边"是从某个网格位置出发的各个方向.然而,A*可用于任意图形,不仅仅是 ...

最新文章

  1. 去掉chrome记住密码后自动填充表单的黄色背景
  2. 键盘谍影 键盘监视器的原理和防范
  3. 让Hive支持行级insert、update、delete
  4. ABAP OO的八大理由
  5. BCrypt加密怎么存入数据库_第6天 密码加密与微服务鉴权JWT(下)
  6. Spring bean相关
  7. mongodb同时更新一条记录_MongoDB 存储和优化系列一
  8. SAP CRM和Cloud for Customer中的Event handler(事件处理器)
  9. [翻译]用于.NET Core的Windows窗体设计器发布
  10. js对象序列化为json字符串
  11. 【转载】单片机应用系统断电时的数据保护方法
  12. html图片分类插件,Quicksand-jQuery超酷图片分类插件
  13. 《坦克世界》1.0+:使用 CPU 优化的图形和物理丰富用户体验
  14. 2016HUAS暑假集训训练题 F - 简单计算器
  15. 解决eclipse maven工程中src/main/resources目录下创建的文件夹所显示样式不是文件夹,而是“包“图标样式的问题
  16. DB2 9 根本(730 检修)认证指南,第 6 局部: 数据并发性(2)
  17. 腾讯2014在广州站实习生offer经验(TEG-开发背景)
  18. springboot之Result结果类处理
  19. WIFI、路由器、猫、AP管理
  20. 鸿蒙系统是虚头,PS里如何分辨抠图用何种方法?

热门文章

  1. 基于jsp+mysql+Spring+mybatis的ssm酒店管理系统
  2. 【ps功能精通】4.简单背景图片抠图
  3. 商品服务 - 销售属性维护,属性分组与属性关联
  4. 各种浏览器User-Agent大全
  5. springMVC中ajax使用json 对象 出现 状态代码: 415 Unsupported Media Type
  6. java背单词软件_背单词的java小软件
  7. java毕业生设计紫陶文化传播与学习交流网站计算机源码+系统+mysql+调试部署+lw
  8. 计算机毕业设计ssm基于b_s架构的实习管理系统
  9. 高德地图 sdk 加载 geoserver 发布的瓦片地图服务
  10. 从C端市场延伸至B端业务拓展,流利说深耕行业英语价值几何?