Java软件设计模式------单例设计模式

Posted 波光闪烁

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java软件设计模式------单例设计模式相关的知识,希望对你有一定的参考价值。

Java软件设计模式一共分为23种;

一般常用的有:

  单例设计模式

  装饰设计模式

  工厂设计模式

单例设计模式(以后的用处:spring框架IOC,默认创建的对象都是单例的):

  单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例类的特殊类。通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源。如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案。

单例设计模式分为两种(饿汉式和懒汉式):

①饿汉式(常用):

特点:只创建一个对象,返回该对象供使用,不能在其它类里实例化。

 

public class SingleClass {

private SingleClass(){} //私有化构造方法 不能new对象
private static final SingleClass s=new SingleClass();
//创建一个返回本类对象的方法
public static SingleClass getInstance(){
return s;
}
}


②懒汉式:

特点:先不创建对象,用if条件判断,如果没有这个对象才会创建。


public class LazySingleClass {
private LazySingleClass(){}  //私有化构造方法
private static LazySingleClass lsc=null;
//同步代码块
public synchronized static LazySingleClass getInstance(){
if(lsc==null)
lsc= new LazySingleClass();
return lsc;
}
}

我们可以创建一个测试类

 

public class Test {
public static void main(String[] args) {
//(接收返回值Ctrl+1 点击new local variable)
//饿汉式
SingleClass s1 = SingleClass.getInstance();
SingleClass s2 = SingleClass.getInstance();

//比较s1和s2是否为同一个对象

System.out.println("饿汉式:"+s1.equals(s2));

//懒汉式--------------
LazySingleClass l1=LazySingleClass.getInstance();
LazySingleClass l2=LazySingleClass.getInstance();

//比较l1和l2是否为同一个对象
System.out.println("懒汉式:"+l1.equals(l2));
}
}

这时候我们可以看到控制台输出结果为:

饿汉式:true
懒汉式:true

结论:通过单例模式可以保证系统中一个类只有一个实例。

 
































以上是关于Java软件设计模式------单例设计模式的主要内容,如果未能解决你的问题,请参考以下文章

Java软件设计模式------单例设计模式

Java 设计模式

java软件设计模式只单例设计模式

java软件设计模式——单例设计模式中的饿汉式与 懒汉式示例

java和设计模式(单例模式)

java单例和多例