单例模式

来源:互联网 发布:visio2013网络图标库 编辑:程序博客网 时间:2024/06/16 21:50

      单例模式(Singleton:保证一个类仅有一个实例,并提供一个访问它的全局访问点。懒汉式单例模式(返回时才创建对象,下面的例子就是)和饿汉式单例模式(在声明变量的时候就创建对象)。

类图:

代码实现:

publicclass Singleton {

    //1.构造方法私有化,不能在类的外部创建类。

    private Singleton(){}

    //2.创建私有的唯一实例。

    privatestatic Singletoninstance;

    //3.创建公共的访问方法。(获取实例)

    publicstatic Singleton getInstance(){

       if(instance==null){

           instance=new Singleton();

       }

       returninstance;

    }

}

publicstaticvoid main(String[] args) {

       Singleton sing1=Singleton.getInstance();

       Singleton sing2=Singleton.getInstance();

       Singleton sing3=Singleton.getInstance();

      

       System.out.println(sing1);

       System.out.println(sing2);

       System.out.println(sing3);

    }

运行结果:

    Singleton.Singleton@1fc4bec

    Singleton.Singleton@1fc4bec

    Singleton.Singleton@1fc4bec

但是这还有问题!getInstance方法不是线程安全的,如果是多线程程序就可能产生两个对象。所以还要在getInstance方法加上synchronized关键字声明,synchronized关键字声明线程安全。

优点:统一管理数据,节省空间。

缺点:降低程序的效率。

      本模式节省空间,降低了效率。就是用效率来换空间。(伦:设计程序在很多时候就是要找空间和效率的平衡点;达:在如今信息化的时代,速度比空间要重要)