当前位置:   article > 正文

Unity单例模式较为简单的理解

Unity单例模式较为简单的理解

本文将介绍unity中单例模式从最简单到复杂的实际使用。

单例模式是一种设计模式。

设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。

单例模式是指在内存中只会创建一次对象的设计模式,并且确保一个类只有实例,而且会自行实例化,并向整个系统提供这个实例。它有以下几点要求:

  1. 因为不能被外界实例化,所以构造方法一定是private的
  2. 单例模式只能有一个实例,且这个实例属于当前类,也就是说这个实例是当前类的成员变量,还得是静态变量。
  3. 它要求向整个系统提供这个实例,即我们要再提供一个静态的方法,向外界提供当前类的实例

首先书写一个最简单的单例模式,这个类的成员变量就是一个自己的对象,并且初始化的时候将这个变量设置为自己。

然后我们将这个脚本给某个对象:

此时这个脚本的实例就是它自己本身。

然后我们就可以在另外的脚本中,直接调用该类.实例.方法的方式直接调用该类里的函数:

一般来说,不需要继承MonoBehaviour。

接下来对单例模式进行细化讲解:

单例模式是指在内存中只会创建且仅创建一次对象的设计模式。在程序中多次使用同一个对象且作用相同时,为了防止频繁地创建对象使得内存飙升,单例模式可以让程序仅在内存中创建一个对象,让所有需要调用的地方都共享这一单例对象。

在这里插入图片描述

一般情况下我们都会把类的构造器定义成public的访问权限,允许任何类在任何情况下都可以创建该类的对象。但是某些情况下允许其它类自由创建该类的对象没有任何意义,甚至还可能造成系统性能的下降,因为频繁地创建对象和回收对象会带来系统的开销问题。

如果一个类始终只能创建一个实例,则这个类被称为单例类。
使用起来有三个限制:

  1. 总之,在一些特殊场景下,为了避免其他类自由创建该类的对象,应该把该类的构造器使用private修饰,从而把该类的所有构造器隐藏起来。
  2. 根据良好的封装原则:一旦把该类的构造器隐藏起来,就需要提供一个public方法作为该类的访问入口,用于创建该类的对象,且该方法必须使用static修饰,因为调用该方法之前还不存在对象,因此调用该方法的不可能是对象,只能是类。
  3. 除此之外,该类还必须缓存已经创建的对象,否则该类无法知道是否已经创建过对象,也就无法保证只创建一个对象。为此该类需要使用一个成员变量来保存曾经创建的对象,因为该成员变量需要被上面的静态方法访问,所以该成员变量必须使用static修饰。

因此,代码如下:

在这里插入图片描述

在unity中,上面的获取实例的方法可以变为使用一个public变量,然后设置其get方法即可,代码如下:

(而构造函数缺失则系统会自动生成,因此这里可以不用写)

随后即可在其他地方直接对其直接调用类名.Instance.类里的方法即可。

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号