zoukankan      html  css  js  c++  java
  • 01.05 单例模式

    设计模式——单例模式

    需求

    在各种应用环境中,应该能发现某些类在这样一点上与众不同:这个类在同一时刻只能有一个对象实例,不允许多个。像一个网站的访问计数器,只能是全局唯一实例,这就需要单例模式(Singleton Pattern)。

    定义

      

    单例模式就是确保一个类只有一个实例,并且该实例必须自动创建,并向整个系统提供该实例。

    实现原理:(1)将构造函数定义成私有或者受保护,使得不能通过构造函数来创建对象;(2)定义一个静态的方法提供公共接口,用于访问维一的实例。

    单例模式特征:(1)任何时刻单例类只能有一个实例;(2)单例类自己创建这个唯一的实例;(3)单例类必须给所有其他对象提供这个实例。

    单例模式又可以分为饿汉式单例模式和懒汉式单例模式。饿汉式单例模式在类初始化时就已经创建了自身的对象实例;而懒汉式单例模式则是在需要使用的时候才创建自身的对象实例。

    案例

        class Program

        {

            static voidMain(string[] args)

            {

                // 客户程序

                ChairmanSingleton theChairman = ChairmanSingleton.Instance;

                LogManagerSingleton theLogManager = LogManagerSingleton.Instance;

            }

        }

        // 懒汉式单例模式编写示例:主席类

        public class ChairmanSingleton

        {

            protected ChairmanSingleton()    // 私有或者保护构造函数

            { }

            private static ChairmanSingleton _Instance;

            public static ChairmanSingleton Instance

            {

                get

                {

                    if (_Instance == null) _Instance = new ChairmanSingleton();

                    return _Instance;

                }

            }

        }

        // 饿汉式单例模式编写示例:日志管理器类

        public class LogManagerSingleton

        {

            private LogManagerSingleton()    // 私有或者保护构造函数

            { }

            private static LogManagerSingleton _Instance = new LogManagerSingleton();

            public static LogManagerSingleton Instance { get { return _Instance; } }

        }

    优缺点

    优点:在单例模式中,客户调用类的实例时,只能调用一个公共的接口,这就为整个系统开发提供了一个共享的概念。

     

    缺点:(1)实现单例模式的类在实例化后,不能被别的类继承,因为使用了静态成员与静态接口;(2)在分布式系统中,当系统中的单例类被复制到多个虚拟机下时,在每一个虚拟机下都会创建一个实例对象,违反了单例模式的初衷,此时如果想知道具体那个虚拟机下运行着那个单例对象是很困难得;(3)单例类很难实现序列化。

  • 相关阅读:
    MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
    最近的一些有关MS CRM 2011的更新
    MS CRM 2011 RC中的新特性(6)——连接
    MS CRM 2011 RC中的新特性(7)—仪表板
    参加MS CRM2011深度培训课程——第一天
    MS CRM 2011插件调试工具
    MS CRM2011实体介绍(四)——目标管理方面的实体
    MS CRM 2011 RC中的新特性(3)——客户服务管理方面
    MS CRM 2011 RC中的新特性(8)—数据管理
    ExtAspNet 登陆
  • 原文地址:https://www.cnblogs.com/sagahu/p/2711158.html
Copyright © 2011-2022 走看看