单例模式(懒汉模式与饿汉模式)
2016-10-20 15:33
162 查看
1.单例模式:
应用场景:当系统中只需要一个对象就够了,如任务管理器、古代皇帝、现代老婆
作用:保证在一个系统中有且只有一个实例
类型:饿汉模式、懒汉模式
2.饿汉模式:
测试代码:
3.懒汉模式:
测试代码:
4.饿汉模式与懒汉模式的区别:
饿汉模式:加载类时比较慢,因为需要时间去创建对象,但是在获取类的实例速度比较快,因为实例已经存在无需创建,另外,线程安全;
懒汉模式:加载类时比较快,因为加载类时不需要创建对象,但在获取类的实例速度比较慢,因为需要去创建对象,另外,线程不安全,可能多个线程同时访问获取实例的方法。
应用场景:当系统中只需要一个对象就够了,如任务管理器、古代皇帝、现代老婆
作用:保证在一个系统中有且只有一个实例
类型:饿汉模式、懒汉模式
2.饿汉模式:
public class Singleton { //1.私有化构造方法,让其他类无法通过new的方式创建该类的实例 private Singleton(){ } //2.创建类的唯一实例,使用private static关键字修饰 private static Singleton instance = new Singleton(); //3.对外部提供一个获取该类实例的方法,使用public static关键字修饰 public static Singleton getInstance(){ return instance; } }
测试代码:
public class TestSingleton { public static void main(String[] args) { //饿汉模式 Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); if(s1 == s2){ System.out.println("s1 == s2"); }else{ System.out.println("s1 != s2"); }//s1==s2 } }
3.懒汉模式:
public class Singleton2 { //1.构造方法私有化,不让外部直接创建对象 private Singleton2(){ } //2.声明类的唯一实例,使用private static 关键字修饰 private static Singleton2 instance; //3.对外部提供一个获取该类实例的方法,使用public static关键字修饰 public static Singleton2 getInstance(){ if(instance == null){ instance = new Singleton2(); } return instance; } }
测试代码:
public class TestSingleton2 { public static void main(String[] args) { //懒汉模式 Singleton2 s1 = Singleton2.getInstance(); Singleton2 s2 = Singleton2.getInstance(); if(s1 == s2){ System.out.println("s1 == s2"); }else{ System.out.println("s1 != s2"); }//s1==s2 } }
4.饿汉模式与懒汉模式的区别:
饿汉模式:加载类时比较慢,因为需要时间去创建对象,但是在获取类的实例速度比较快,因为实例已经存在无需创建,另外,线程安全;
懒汉模式:加载类时比较快,因为加载类时不需要创建对象,但在获取类的实例速度比较慢,因为需要去创建对象,另外,线程不安全,可能多个线程同时访问获取实例的方法。
相关文章推荐
- java设计模式之单例模式写法,懒汉,饿汉,双检锁
- Singleton 单例模式(懒汉方式和饿汉方式)
- 单例模式中的懒汉模式和饿汉模式
- 单类设计模式 --- 饿汉模式 & 懒汉模式
- 从java.lang.Runtime看单例懒汉饿汉模式的选择
- 单例模式——懒汉模式和饿汉模式
- 单例设计模式(饿汉模式与懒汉模式)
- 单例模式之懒汉模式与饿汉模式的对比
- 设计模式C++实现(4)——饿汉懒汉之单例模式
- 饿汉模式和懒汉模式的多线程访问问题
- 懒汉模式与饿汉模式
- java 单例模式 -饿汉 -懒汉
- 设计模式之单例模式:懒汉&饿汉
- 单例模式,懒汉模式,饿汉模式区别
- Java中的单例设计模式之饿汉模式、懒汉模式
- 单例模式中的懒汉模式和饿汉模式
- Singleton 单例模式(懒汉方式和饿汉方式)
- 单例模式简单解析--Singleton 单例模式(懒汉方式和饿汉方式)
- 从java.lang.Runtime看单例懒汉饿汉模式的选择
- 【单例模式】——饿汉模式与懒汉模式及其区别