【游戏编程模式】读书笔记四:原型模式、单例模式
《游戏编程模式》-Bob Nystrom
书籍汉化版网址:https://gpp.tkchu.me/
原型模式
基本定义与概念
原型模式(PrototypePattern)是一种创建型设计模式,设计之初是为了解决"重复创建类似对象"这一问题,其提倡通过预先创建一个"原型对象",再通过对原型进行克隆的方式创建对象。虽然在今时今日原始的原型模式实现方式已经有些过时,很多语言已经将原型模式纳入了其语言特性中(如Unity中的Instantiate方法),但其思想仍然有值得学习借鉴的地方,如在我们通过JSON配置对象数据时,我们便可以将一部分相同的数据作为原型部分来提高效率。
单例模式
基本定义与概念
单例模式(Singleton)是最易于使用,同时也存在着许多争议的一种设计模式。其理念是:**保证一个类只有一个实例,并且提供访问该实例的全局访问点。**从另一个角度来说,单例模式是一种将全局状态封装为类的模式。其有着鲜明的优缺点,它是一种方便好用的设计模式,但是它也有着很多缺陷,依据本书作者的话来说,使用它更接近一种“饮鸩止渴”的状态。
优点
- 使用懒汉式单例时,惰性加载可以一定程度上节省内存,没人调用它时,其便不会被创建
- 与静态/全局状态相比,其在运行时进行实例化,这让其初始化变得方便,不必担心引用问题
- 因其可以被全局访问,调用它非常轻松惬意
缺点
- 全局访问的特性,让理解代码变得困难,同时并不安全,因为所有人都能访问到,也让并行开发变得困难
- 使用懒汉式单例时,惰性加载让准确控制其加载时机变得困难,无法手动控制其内存
- 饿汉式单例随没有惰性加载的问题,但其相比静态类很难突出其优势
Unity简单实现
Singleton懒汉式泛型基类实现:分为不继承Mono与继承Mono两个版本
1 | namespace SingletonPattern |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Hmxs's Blog!
评论