提供网站建设的公司,大连网站制作公司58,个人微信公众号如何推广,电商类网站建设合同书单例模式
单例模式是一种常用的软件设计模式#xff0c;它确保一个类只有一个实例#xff0c;并提供一个全局访问点来获取这个实例#xff0c;通过单例模式防止私有成员被多次引用#xff0c;防止数据被随意纂改。本文使用的是线程不安全的懒汉式单例。
创建单例模式 首…单例模式
单例模式是一种常用的软件设计模式它确保一个类只有一个实例并提供一个全局访问点来获取这个实例通过单例模式防止私有成员被多次引用防止数据被随意纂改。本文使用的是线程不安全的懒汉式单例。
创建单例模式 首先创建一个类定义一个静态的私有变量 m_Instance null用来存储单例对象的实例。 接着创建私有构造函数确保它不能从类外部被实例化只有一个实例被创建。 最后使用 get()和set()接口 来实现调用。在 get 访问器中包含了一个检查确保m_Instance 只在第一次访问时被创建。 private static GameManager m_Instance null;// 私有构造函数防止外部通过new关键字创建实例private GameManager(){// 可以在这里初始化一些资源}//接口调用实现public static GameManager instance{get{if (m_Instance null){m_Instance new GameManager();}return m_Instance;}}
单例模式使用示例 通过访问单例实例可以发现gameManager1和gameManager2引用了同一个GameManager实例因此它们的name属性相同并且它们是用一个对象。 class Program
{static void Main(string[] args){GameManager gameManager1 GameManager.Instance;GameManager gameManager2 GameManager.Instance;Console.WriteLine(gameManager1.name); // 输出我是Game ManagerConsole.WriteLine(gameManager2.name); // 输出我是Game ManagerConsole.WriteLine(gameManager1 gameManager2); // 输出True}
}
线程安全问题
虽然这种实现在单线程环境中工作良好但它在多线程环境中可能不安全。如果多个线程同时访问Instance属性并发现m_Instance为null可能会创建多个实例。因此在使用的时候需要考虑安全问题。