单例模式

单例模式:一个类可以创建N个对象,但有时候需要一个类至始至终就一个对象,一般用于这种所有人看到的内容都是一样的这种情况,比如登陆上下文信息。

           一个类有时候要保证它只有一个实例,昨天的代码中我们把该类的构造函数设置成了私有的,这样使用它的人就不能直接创建这个类的对象了。我们又提供了一个方法,getInstance这个方法保证负责每次都只返回同一个实例,而这个实例就是放在了上面你截图的对象中的静态属性中了 private static UserContext m_userContext;

          刚才说的那个就是设计模式中的单例模式,就是保证一个类始终只有一个对象,关键要点就是类有一个静态私有成员,类型是它自己;该类的构造函数是私有的,不让使用者创建对象;然后在提供一个静态的方法,来获取内部的那个唯一的私有静态属性。

    /// <summary>
    /// 登录上下文,用户保存登录信息
    /// </summary>
    public class UserContext
    {
        //定义一个静态的自己的对象,用于保存唯一的实例(实例=对象)
        private static UserContext m_userContext;
        private string m_userName;
        /// <summary>
        /// 属性是只读的,不能随便修改
        /// </summary>
        public string UserName
        {
            get { return m_userName; }
        }
        private string m_Pwd;

        public string Pwd
        {
            get { return m_Pwd; }
            set { m_Pwd = value; }
        }

      
        /// <summary>
        /// 私有的构造函数,外无法创建该对象的实例,这样别人就不能new 这个类了 ,因为私有的方法只有自己类内部调用
        /// </summary>
        private UserContext()
        {
        }
        private UserContext(string userName, string pwd)
        {
            this.m_userName = userName;
            this.m_Pwd = pwd;
        }
        /// <summary>
        ///创建用户上下文类的方法,如果存在该对象的话,就直接返回,保证始终只有一个对象,第一次创建对象的时候使用
        /// </summary>
        /// <param name="userName"></param>
        /// <param name="pwd"></param>
        /// <returns></returns>
        public static void CreateInstance(string userName, string pwd)
        {
            if (m_userContext == null)
            {
                m_userContext = new UserContext(userName, pwd);
            }
        }
        /// <summary>
        /// 返回对象时使用
        /// 第一次调用CreateInstance存入数据,之后用GetInstance获取数据
        /// </summary>
        /// <returns></returns>
        public static UserContext GetInstance()
        {
            if (m_userContext == null)
            {
                throw new Exception("请先使用CreateInstance函数创建对象!");
            }
            return m_userContext;
        }

    }

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值