23种设计模式之单例模式

来源:互联网 发布:广东网络干培训学院 编辑:程序博客网 时间:2024/06/07 01:47


一、什么是设计模式?

设计模式是一套被反复使用,多数人知晓的、经过分类编目的、代码设计经验总结。


目的:使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。


二、为什么要使用单例模式?

有些对象我们只需要一个,比如:配置文件、工具类、线程池、缓存、日志对象等。

如果创建了多个实例,就会导致许多问题,比如:占用过多的资源、不一致的结果。


三、什么是单例模式?

单例模式:保证整个应用中的某个实例有且只有一个。


四、单例模式一般分类?

单例模式一般分为:懒汉模式和饿汉模式。


五、代码实现。


饿汉模式:

package com.yc.singleton;/** * 饿汉模式 * @author HM * */public class Singleton {//1.将构造方法私有化,不允许外部直接创建对象private Singleton(){}//2.创建类的唯一实例,使用private static 修饰private static Singleton instance=new Singleton();//3.提供一个获取实例的方法public static Singleton getSingleton(){return instance;}}

测试及测试结果:

package com.yc.singleton;public class Test {public static void main(String[] args) {Singleton s1=Singleton.getSingleton();Singleton s2=Singleton.getSingleton();if(s1==s2){System.out.println("s1和s2是同一个实例");}else{System.out.println("s1和s2不是同一个实例");}}}

结果输出:s1和s2是同一个实例。


懒汉模式:


package com.yc.singleton;/** * 懒汉模式 * @author HM * */public class Singleton1 {//1.将构造方法私有化,不允许外部直接创建对象private Singleton1(){}//2.声明类的唯一实例,使用private static 修饰private static Singleton1 instance;//3.提供一个获取实例的方法,使用 public static修饰public static Singleton1 getSingleton(){if(instance==null){instance=new Singleton1();}return instance;}}

测试及测试结果:

                Singleton1 s3=Singleton1.getSingleton();Singleton1 s4=Singleton1.getSingleton();if(s3==s4){System.out.println("s3和s4是同一个实例");}else{System.out.println("s3和s4不是同一个实例");}

结果输出:s3和s4是同一个实例。


总结:两种模式的特点比较:饿汉模式特点:加载类比较慢,但是运行时获取对象的速度比较快,而且是线程安全的;懒汉模式特点:加载类比较快,但是运行时获取对象的速度比较慢,是线程不安全的。


0 0
原创粉丝点击