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

      使用单例模式的条件

      使用单例模式有一个必要条件:在一个系统要求一个类只有一个实例时才应当使用单例模式。反过来说,如果一个类可以有几个实例共存,

    那么就没有必要使用单例类。

      在任何使用了EJB、RMI、JINI技术的分散式系统中,应当避免使用有状态的单例模式。P217

    单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

    所有类都有构造方法,不编码则系统默认生成空的构造方法,若有显示定义的构造方法,默认的构造方法就会失效。

    只要把类的构造方法设置成private的,那么外部程序就不能用new来实例化它了。

    class Singleton
    {
       private static Singleton instance;
       private Singleton()   // 构造方法私有,外界不能用new创建此类的实例
       {
       }
       public static Singleton GetInstance() // 此方法是获得本类实例的唯一全局访问点
       {  
           if(instance==null)  //若实例不存在,则new一个新实例,否则返回已有的实例
           {
                instance=new Singleton(); 
           }
           return instance;
       }
    }    

     单例模式应用场景:

    网站的计数器。

    1、资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如日志文件,应用配置。

    2、控制资源的情况下,方便资源之间的互相通信。如线程池等。

      映射到三层架构中就是DLL层的类统统可以采用单例模式,为了保证系统的正确运行同时尽可能的减少资源的开销。于是在这部分用到了单例模式。???

    这句话是否正确值得验证。

    在main方法中调用

    应用实例:

    调用结果:

    从调用结果来看,可以生成多个实例,每个实例计数从1000开始累加。

    改为单例模式之后:

    调用结果

     从调用结果中看出,改成单例模式之后TicketMaker类只能产生一个实例,计数从1000累加。

  • 相关阅读:
    作业第十六周
    web、app、小程序测试异同点
    接口测试用例演进
    Python中“if __name__=='__main__':”
    iPhone发布内测程序的方法
    我的2020
    python 参数笔记 --> 位置参数 关键字参数 命名参数 形式参数 默认参数 可变参数 可选参数 位置顺序
    uwsgi 热部署 热启动 热更新
    Supervisor 进程管理工具 笔记
    spring Boot----注解驱动开发
  • 原文地址:https://www.cnblogs.com/heyesp/p/4543282.html
Copyright © 2011-2022 走看看