单例模式

JAVA中,我们NEW一个对象就称实例化一个对象,单例模式就是只实例化出某个类的一个对象。这样可以节省资源,不必每次总实例化新的对象,只需要将获取原先实例化的对象即可。

    单例模式又分为懒汉式单例模式和饿汉式。分类的根据是实例化对象的时机不同。只有当调用getInstance()方法时才实例化对象,叫懒汉式。(顾名思义,比较懒吗。只有你调用方法时才产生对象^_^)。饿汉式就是先实例化对象,等你调用方法时直接获取已经产生的对象。在程序中可以根据对象的使用情况,选择不同的模式。当暂时用不到此对象而此对象的实例化占用资源较大时,建议用懒汉式。相反,则用饿汉式。JAVADateFormate就用到了单例模式。

    例子1:懒汉式

           public class LazyManSingleton {

          private LazyManSingleton (){}

          private static LazyManSingleton instance = null;

          //这里提供了一个供外部访问本class的静态方法,可以直接访问  

          public static synchronized LazyManSingleton getInstance() {

            if (instance==null){

                                          instance = new LazyManSingleton ();

}  

          }

    }

例子1:饿汉式

           public class HungryManSingleton {

          private HungryManSingleton (){}

          private static HungryManSingleton instance = new HungryManSingleton ();

          //这里提供了一个供外部访问本class的静态方法,可以直接访问  

          public static HungryManSingleton getInstance() {

            return instance;   

           }

     }

当系统只需要一个实例就能满足当前需求时就可以用单例模式以来节省资源。或某个对象的实例化过程占用资源较大,最好只创建一个实例。例如:创建某个对象的工厂类就可以用单例模式,对注册表或数据库的访问的类等。

注意的问题:

1.需要将构造方法私有化,防止在类外部new对象;

2.为懒汉式单例模式的getInstance()方法加上synchronized关键字,防止多用户并发访问此方法时产生多个实例。

有不纰漏的地方,希望大家多多指教。如果觉的能学到东西,就留个脚印。呵呵

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值