模式之单例模式简介"/>
设计模式之单例模式简介
设计模式是什么???
在开发程序的过程中经常遇到一些典型的问题,在对这些问题进行处理解决的过程中,慢慢的整理出来一套系统的解决方案,这套方案就称之为“设计模式”
在开发过程中也会遇到很多针对性的问题,我们就可以学习前人总结好的各种各样的设计模式,来解决这些编程开发中的问题。
举个栗子:
玩王者荣耀的玩家都知道,在冒险模式的挑战中有个《血王宫回忆》关卡,保证孙膑,钟无艳不死通关,,这时网上就会有很多的 攻略,告诉我们用什么英雄,怎么玩,,,这时我们就可以过关了,这些攻略就可以看做事游戏中的设计模式!
单例设计模式:
什么是单例:
设计一个类的时候,需要保证整个程序在运行期间只存在一个实例对象,解决这个问题,我们需要用到“单例模式”,
注:单例模式是用于非静态类中的,在静态类中写单例无意义。
使用步骤:
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函数中直接访问单例模式!这样很有可能会造成单例无法销毁
更多推荐
设计模式之单例模式简介
发布评论