zoukankan      html  css  js  c++  java
  • 单例模式(Singleton Pattern)

    Singleton Pattern 属于创造型设计模式,提供一种创建对象的方法,涉及一个单一类的实例,确保一个类只创建一个对象,提供访问唯一对象的方法,可以直接访问,不需要创建。

    • 单一类只有一个实例
    • 类必须自己创建自己的实例
    • 给其他调用对象提供访问该类实例的方法

    目的:一个类只创建一个实例
    优点:减少全局使用该类的频繁创建与销毁,节省系统资源,避免对资源的多重占用
    缺点:没有借口,不可以被继承,与单一职责冲突,一个类应该只关心自己内部逻辑,不关心外部调用实例情况

    实例应用:
    多进程多线程,操作同一个文件时,多个线程同时操作一个文件的时候,所有文件应该通过同一个实例操作

    实现:

    • 构造函数是私有的
    • 判断系统是否已经存在该实例,有就返回,无则创建

    Code:

        public class SingletonObject
        {
            // 唯一实例
            private static SingletonObject singleton;
            // 私有构造函数(限制外部实例化)
            private SingletonObject()
            {
    
            }
    
            // 方式一:
    		
            /// <summary>
            /// 提供外部获取该类实例的静态方法(可带参数)
            /// </summary>
            /// <returns>SingletonObject</returns>
            public static SingletonObject getInstance1()
            {
                if (singleton == null)
                    singleton = new SingletonObject();
                return singleton;
            }
    
            // 方式二:
    
            // 只读属性(无法带参数)
            public static SingletonObject getInstance2
            {
                get
                {
                    if (singleton == null)
                        singleton = new SingletonObject();
                    return singleton;
                }
            }
    
    	      
            /// <summary>
            /// 类内部方法
            /// </summary>
            /// <returns></returns>
            public string FuncName()
            {
                return "This is Singleton Pattern";
            }
    
        }
    

    外部调用:

    string s1 = SingletonObject.getInstance1().FuncName(); // 方法

    string s2 = SingletonObject.getInstance2.FuncName(); // 属性

  • 相关阅读:
    Persist Security Info=False是干什么的
    SQL Server windows身份验证和SQL Server身份验证的连接字符串
    SQL Server windows身份验证和SQL Server身份验证的连接字符串
    Entity Framework—配置文件设置
    Entity Framework—配置文件设置
    inner outer
    group by
    SQL Select语句完整的执行顺序(转)
    with check(转)
    三层和MVC
  • 原文地址:https://www.cnblogs.com/Canaban/p/12987668.html
Copyright © 2011-2022 走看看