Unity3d游戏开发设计模式之单例设计模式-阿里云开发者社区

开发者社区> 开发与运维> 正文

Unity3d游戏开发设计模式之单例设计模式

简介: 后面我将会为大家一一整理出单例模式的写法分类 我们先了解熟悉一下什么是单例设计模式: 【单例模式说明】 【前言】 最近开始花点心思研究下设计模式,主要还是让自己写的代码可重用性高、保证代码可靠性。

后面我将会为大家一一整理出单例模式的写法分类
我们先了解熟悉一下什么是单例设计模式:

【单例模式说明】

【前言】
最近开始花点心思研究下设计模式,主要还是让自己写的代码可重用性高、保证代码可靠性。
所谓设计模式,我找了下定义:是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
毫无疑问,设计模式于己于他人于系统都是多赢的;设计模式使代码编制真正工程化;设计模式是软件工程的基石脉络,如同大厦的结构一样。
为什么要提倡“Design Pattern(设计模式)”?
根本原因是为了代码复用,增加可维护性。因此这次我们来学习下设计模式,最后会通过C#语言来实现这些设计模式作为例子,深刻理解其中的精髓。

【定义】
单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。
通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。
如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。
特点
1、 某个类只能有一个实例
2、它必须自行创建这个实例
3、它必须自行向整个系统提供这个实例。
优缺点
优点:
【一、实例控制】
单例模式会阻止其他对象实例化其自己的单例对象的副本,从而确保所有对象都访问唯一实例。
【二、灵活性】
因为类控制了实例化过程,所以类可以灵活更改实例化过程。
缺点:
【一、开销】
虽然数量很少,但如果每次对象请求引用时都要检查是否存在类的实例,将仍然需要一些开销。可以通过使用静态初始化解决此问题。
【 二、可能的开发混淆】
使用单例对象(尤其在类库中定义的对象)时,开发人员必须记住自己不能使用new关键字实例化对象。
因为可能无法访问库源代码,因此应用程序开发人员可能会意外发现自己无法直接实例化此类。
【 三、对象生存期】
不能解决删除单个对象的问题。在提供内存管理的语言中(例如基于.NET Framework的语言),
只有单例类能够导致实例被取消分配,因为它包含对该实例的私有引用。在某些语言中(如 C++),
其他类可以删除对象实例,但这样会导致单例类中出现悬浮引用。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
开发与运维
使用钉钉扫一扫加入圈子
+ 订阅

集结各类场景实战经验,助你开发运维畅行无忧

其他文章