设计模式-----单例模式

来源:互联网 发布:第三只眼监控软件 编辑:程序博客网 时间:2024/06/03 14:04

在JAVA中,有一种著名的设计模式,叫做单例模式,何为单例模式呢?简单的说法就是:该类的对象只有唯一一个,我们都知道,一般来说类的对象new出来后是不一样,而单例模式new出来的对象,完全还是那一个。打个比方,你的老婆叫小丽,那么你叫老婆的时候,指的就是小丽,而不是其他某些人。

那如何实现,有两种方法,一种叫饿汉式,一种叫懒汉式。

饿汉式就是直接把对象new出来,懒汉式是通过方法new出来。

eg:

饿汉式:

class SingleDemo{

private static SingleDemo s1 =new SingleDemo();//static修饰,随着类的加载而加载

private SingleDemo(){}//私有构造方法,外界就不能构造对象了

public static SingleDemo getS1(){

return s1;

}

}

懒汉式:

class SingleDemo2{

private static SingleDemo2 s2;

private SingleDemo2(){}//私有构造方法

public static SingleDemo2 getS2(){

if(s2==null){

s2 =new SingleDemo2();//和饿汉式相比,这个时候才构造对象

         }

return s2;

}

}

上述就是产生单利模式的对象方法。

验证:

class TestDemo{

public static void main(String[] args){

SingleDemo a =SingleDemo.getS1();//只能用方法产生对象

SingleDemo b =SingleDemo.getS1();

SingleDemo2 c =SingleDemo.getS2();

SingleDemo2 d =SingleDemo.getS2();

System.out.println(a==b);

System.out.println(c==d);

}

}

结果:true

  true

说明产生的对象是同一个,实现了上述要求。从代码分析,单例模式实现要点是:首先要使用static修饰类,并用private修饰构造方法,使其他类不能用new的方式产生对象,使用静态方法,产生对象。饿汉式和懒汉式的区别是:饿汉式是一开始就new了对象,在方法中直接返回了该对象。而懒汉式则是先判断是否有对象,如果没有再new对象。两者结果就是都产生了唯一一个对象。验证中用获取对象的方法获取多个对象,发现他们实际上是同一个。通俗的说法就是女皇帝的类的对象,不管获取多少次,都是武则天一样。也有点类似一夫一妻制,一个类一个对象

0 0
原创粉丝点击