单例模式

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

类图:

代码实现:

publicclass Singleton {

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

    private Singleton(){}

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

    privatestatic Singleton instance;

    //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关键字声明线程安全。

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

缺点:降低程序的效率。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值