单例模式

来源:互联网 发布:淘宝新店卖啥好 编辑:程序博客网 时间:2024/06/16 12:43
单例模式:       定义:有且只有一个实例          应用场合:有些对象只需要一个就足够了.如古代皇帝,老婆
         作用:保证整个应用程序中某个实例有且只有一个.
常用的单例模式有两种:    1.饿汉模式
     步骤:     1.1构造方法私有化.    (被private修饰的变量与方法只能在本类使用,因此外界无法通过构造方法直接创建对象,只能通过类名调用该类    的public静态成员与方法.)    1.2.本类中直接创建一个类的唯一实例,并且是一个私有静态的实例.    1.3.创建一个公共的静态方法来返回该实例,外界可以直接通过类名调用该方法获取得到实例对象.    public class SingleTon{ //构造方法私有化         private SingleTon(){         }         //创建类的唯一实例,使用private static修饰. private static SingleTon instance=new SingleTon();              //创建返回该实例的方法供外界使用,必须是public static修饰. public static SingleTon getInstance(){    return instance; }    }

 2.懒汉模式

     2.1.把构造函数设置成private(外界不能直接通过构造函数来申明类对象)     2.2.申明一个这个类的私有成员对象(没有初始化)     2.3.建立Get方法来让外界获取这个类对象(如果是第一次调用这个类的话,就初始化类的私有成员对象,如果         不是第一次访问的话就直接返回这个私有对象)



public class SingleTon{
   //构造方法私有化   private SingleTon(){   }   //声明一个类的引用,使用private static修饰.   private static SingleTon instance;   //创建返回该实例的方法,使用是public static修饰,方法中判断实例是否已经被实例化过.   public static SingleTon getInstance(){   if(instance==null){    //第一次使用时会实例化该引用.instance=new SingleTon();   }   return instance;   }   }

懒汉模式a和饿汉模式b的区别    b 加载类比较慢,但运行时获取对象的速度比较快,线程安全,因为加载类的时候需要创建唯一的实例对象    a 加载类是比较快,但是在运行时获取对象的速度比较慢,线程不安全,需要加锁,加载类的时候不需要创建对       象


   

1 0
原创粉丝点击