设计模式之单例模式简介

编程入门 行业动态 更新时间:2024-10-13 18:20:43

设计<a href=https://www.elefans.com/category/jswz/34/1771241.html style=模式之单例模式简介"/>

设计模式之单例模式简介

设计模式是什么???

在开发程序的过程中经常遇到一些典型的问题,在对这些问题进行处理解决的过程中,慢慢的整理出来一套系统的解决方案,这套方案就称之为“设计模式”

在开发过程中也会遇到很多针对性的问题,我们就可以学习前人总结好的各种各样的设计模式,来解决这些编程开发中的问题。

举个栗子:
玩王者荣耀的玩家都知道,在冒险模式的挑战中有个《血王宫回忆》关卡,保证孙膑,钟无艳不死通关,,这时网上就会有很多的 攻略,告诉我们用什么英雄,怎么玩,,,这时我们就可以过关了,这些攻略就可以看做事游戏中的设计模式!

单例设计模式:
什么是单例:
设计一个类的时候,需要保证整个程序在运行期间只存在一个实例对象,解决这个问题,我们需要用到“单例模式”,

注:单例模式是用于非静态类中的,在静态类中写单例无意义。

使用步骤:
1,声明一个静态且私有的当前类型的字段
2,创建私有无参的构造方法,保证外部无法实例化本类
3,创建一个静态类方法用于创建此类的唯一对象

在C#中使用的代码简例:

//通常用的类
using System;namespace 设计模式_单例
{class WebClass{private string webName;private string webUrl;public WebClass(string name, string url){this.webName = name;this.webUrl = url;}public void Show(){Console.WriteLine("{0}网站的URL是:{1}",webName,webUrl);}}
}//使用单例的类
namespace 设计模式_单例
{class DanliClass{//声明一个静态且私有的当前类型的字段private static DanliClass _instance;//创建私有构造方法,保证外界访问不到private DanliClass() { }//创建一个静态类方法用于创建此类的唯一对象public static DanliClass _Instance(){//只有第一次执行的时候会新建对象if (_instance == null){_instance = new DanliClass();}return _instance;}}
}/*随意创建对象在游戏开发中不但占用内存,还存在其他的缺点,(比如:对敌人血量的控制,不能子弹,大的时候是一个对象,手雷炸的时候也是个对象,这样肯定是不行的)*/using System;namespace 设计模式_单例
{class Program{static void Main(string[] args){//我们通常使用的对象 方式WebClass web1 = new WebClass("CSDN", "www.blog.csdn");web1.Show();WebClass web2 = new WebClass("百度","www.baidu");web2.Show();Console.WriteLine("-------------------");Console.WriteLine("单例模式");//这样写就不行了//DanliClass danli1 = new DanliClass();DanliClass danli1 = DanliClass._Instance();DanliClass danli2 = DanliClass._Instance();Console.WriteLine("两个单例类对象是否是一个:"+danli1.Equals(danli2));Console.ReadKey();}}
}

在Unity中使用单例的时候可以这样:

不挂载到游戏物体身上,做管理类时:

public class GameConfig  {//通过属性的方式访问private static GameConfig _instance;public static GameConfig Instance{get{if (_instance == null){_instance = new GameConfig();}return _instance;}}//下面写逻辑代码
}

挂载在游戏物体身上的时候这样:

public class GameConfig : MonoBehaviour {public static GameConfig _Instance;void Awake(){if(_Instance== null){  _Instance= this;  }  
}

注:一定不要在OnDestroy函数中直接访问单例模式!这样很有可能会造成单例无法销毁

更多推荐

设计模式之单例模式简介

本文发布于:2024-03-23 21:20:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1742948.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模式   简介

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!