Java单例模式

来源:互联网 发布:web php工程师招聘 编辑:程序博客网 时间:2024/05/16 06:23

    JAVA单例模式是指在一个应用程序中,一个类只有一个共享实例对象,对这个类的访问只有一个入口点。单例类的实现主要有两种方式,懒汉模式和饿汉模式。下面我们看看这两种模式的区别和实现方法。首先如果实现单例模式,构造函数必须是私有的。

1.饿汉模式

所谓饿汉模式是在类加载的时候已经实例化一个对象出来,不管你用还是不用,都已经实例化好了。可以按其意思理解,由于天生比较饥饿,提前要多吃,吃饱。

懒汉模式是天生是安全的,可以在多线程的环境下使用。

package jdbcDemo;public class mainform1 {private static mainform1 mainform=new mainform1();private mainform1(){}public static mainform1 GetInstance(){return mainform;}}


2.懒汉模式

懒汉模式是指提前没有实例化好对象,是在用到的时候才被实例化。在第一次调用的时候,先判断是否创建对象实例,如果没有创建,会创建一个出来。

package jdbcDemo;public class mainform2 {private static mainform2 mainform=null;private mainform2(){}/*用到的时候才被实例化*/public static mainform2 GetInstance(){if(mainform==null){mainform=new  mainform2();}return mainform;}}

上面的懒汉模式如果在多线程的环境下使用,会出现问题,不能保证单一实例。如果在多线程环境下使用,需要加锁,保证实例的唯一性。使用synchronized 关键字

package jdbcDemo;public class mainform2 {private static mainform2 mainform=null;private mainform2(){}/*用到的时候才被实例化*/public synchronized  static mainform2 GetInstance(){if(mainform==null){mainform=new  mainform2();}return mainform;}}


总之,单例模式的特点如下

 单例模式有以下特点:
  1、单例类只能有一个实例。
  2、单例类必须自己创建自己的唯一实例。
  3、单例类必须给所有其他对象提供这一实例。



0 0
原创粉丝点击