Unity学习笔记:单例设计模式
程序员文章站
2022-03-26 17:42:11
单例设计模式 定义:是设计模式中最简单的一个设计模式 单例设计模式本质上就是一个类,一个特殊的类 特殊1:构造方法私有 2:包含一个 静态私有字段 返回自己的类型 3:包含一个 静态公共方法 返回自己的类型 用途:保证自己在应用程序域中 最多仅有一个实例【对象】存在 生活:国家 总统【正】 国家主席【正】 任何设计模式:具体代码实现 有差异 创建单例的三种方法↓using System;......
单例设计模式
定义:是设计模式中最简单的一个设计模式
单例设计模式本质上就是一个类,一个特殊的类
特殊1:构造方法私有
2:包含一个 静态私有字段 返回自己的类型
3:包含一个 静态公共方法 返回自己的类型
用途:保证自己在应用程序域中 最多仅有一个实例【对象】存在
生活:国家 总统【正】 国家主席【正】
任何设计模式:具体代码实现 有差异
创建单例的三种方法↓
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace DemoSingleton
{
class Program
{
static void Main(string[] args)
{
//ChairMan zobj = new ChairMan();
//ChairMan lobj = new ChairMan();
ClassMonitor zobj = ClassMonitor.GetObj;
ClassMonitor lobj = ClassMonitor.GetObj;
int id = zobj.GetHashCode();
int id2 = lobj.GetHashCode();
bool b = id == id2;
}
}
class ChairMan//总统 主席 饿汉模式
{
//字段
public string Name { get; set; }
//方法
//1>
private ChairMan()
{ }
//2>
static private ChairMan obj = new ChairMan();
//3> 提供 得到唯一对象 的唯一通道
static public ChairMan GetObj()
{
return obj;//
}
}
class President//总统 主席 懒汉模式
{
//字段
public string Name { get; set; }
//方法
//1>
private President()
{ }
//2>
static private President obj = null;
//3> 提供 得到唯一对象 的唯一通道
static public President GetObj()
{
if( obj==null)obj=new President();
return obj;//
}
}
class ClassMonitor//班长
{
//字段
public string Name { get; set; }
//方法
//1>
private ClassMonitor()
{ }
//2>
static private ClassMonitor obj = null;
//3> 提供 得到唯一对象 的唯一通道
static public ClassMonitor GetObj
{
get {
if (obj == null) obj = new ClassMonitor();
return obj;
}
}
}
//通用模板↓
class Singleton//单身,一个,单个
{
//字段
public string Name { get; set; }
//方法
//1>
private Singleton()
{ }
//2>
static private Singleton obj = null;
//3> 提供 得到唯一对象 的唯一通道
static public Singleton GetObj
{
get
{
if (obj == null) obj = new Singleton();
return obj;
}
}
}
}
单例模式抽象工具类↓
public abstract class SingletonBase<T>
where T : SingletonBase<T>
{
//1
//2
private static T m_Instance = null;
//3
public static T instance
{
get
{
if (m_Instance == null)
{
m_Instance = null;//new T(); //???? 反射技术
}
return m_Instance;
}
}
}
//使用方法
class Student : SingletonBase<Student>
{
private Student()
{ }
//字段
//方法
}
本文地址:https://blog.csdn.net/huanyu0127/article/details/107700894
上一篇: Android开发二维码之坑