这个仓库是在Unity3D中实现设计模式的合集,使用C#编写。
- 包含GOF的23种设计模式
- 包含《游戏编程模式》的Unity实现
设计模式的精妙之处在于它们是一组经过验证和实践的通用解决方案,可以帮助软件工程师提高代码的质量,并简化软件开发的复杂性。
但这些年关于设计模式的争议也不绝于耳。
最主要的原因是设计模式的概念提出距今有接近三十年了,随着现代软件工程的发展,情况有了些变化:
-
随着软件工程的发展,业务拆分更细了,框架与业务时常被完全拆开。设计模式对于框架开发更重要。
-
一些设计模式已经被语言或者是框架所集成。对于使用它们的开发者而言,使用这些语言支持会更方便。
-
GOF提出设计模式时没有按照使用频率排序导致了部分误解的产生。
但不管是对于什么水平的程序员,什么类型的代码开发,只要我们追求代码的可复用性,我们就需要修炼好设计模式的内功。
我试图阐述Unity3D游戏开发领域的设计模式,包括:
- 按照我的理解对游戏开发中的设计模式进行重要性排序。
- 除了23种设计模式外,引入《游戏编程模式》里的游戏设计模式。
- 对于每一种设计模式,都提供游戏开发中使用它的思路和例子,聚焦游戏开发,目的是加深理解,避免泛泛而谈。
- 对于部分语言/框架:C#/.NET/Unity3D 框架里用得比较多的模式,关注框架里是怎么使用的。通过UnityCSReference里的源码来谈对设计模式的理解。
- 对Unity游戏开发有一定了解,想提升代码质量的工程师。
- 对Unity游戏开发和设计模式都有一定了解,想复习设计模式的工程师。
- 对游戏开发感兴趣,并准备在此领域深挖的初级程序员。
- 对Unity游戏开发完全不了解,但对设计模式感兴趣,想寻找模式应用例子的工程师。
- 完全不了解Unity开发,也没听过设计模式的人。(建议分别学习Unity开发和设计模式)
- 觉得设计模式没有用,享受屎山的工程师。
目前已经完成的例子有:
-
创建型模式
-
结构型模式
-
行为型模式
-
《游戏编程模式》
- 第2章-命令模式(上文已提到)
- 第3章-享元模式(上文已提到)
- 第4章-观察者模式(上文已提到)
- 第5章-原型模式(上文已提到)
- 第6章-单例模式(上文已提到)
- 第7章-状态模式(上文已提到)
- 第8章-组件模式
- 第9章-游戏循环
- 第12章-子类沙盒
- 第14章-组件模式
- 第15章-事件队列
- 第16章-服务定位器模式
- 第17章-数据局部性
- 第18章-脏数据模式
- 第19章-对象池模式 访问专题 | Unity3D中的设计模式以查看更多
本项目参考了以下项目的部分代码:
本工程使用MIT授权协议。
参考了一些外部工程的源码,查看License以获取全部的授权文本。