设计模式-单例模式之饿汉式和懒汉式
2015-04-08 20:31
274 查看
设计模式:通过大量的实践和总结出来的优化的代码结构,编程风格,以及解决问题的方式。
单例设计模式:一个类只能创建一个实例。
如何实现呢?以下4步。
1:私有化构造器,为了是只能在类内部创建实例,而不能在类外创建实例。
2:在类内部创建实例,私有化此实例。
3:公有的方法调用此实例,通过类调用,因此设置为static ,同时此实例也设置为static
饿汉式:
输出的结果为:true
说明s1和s2两个引用指向内存中的同一个地址。即创建的是同一个对象。
懒汉式:
输出的结果为:true
说明s1和s2两个引用指向内存中的同一个地址。即创建的是同一个对象。
饿汉式和懒汉式的区别:创建实例时间不同
饿汉式:一开始定义实例属性时就创建实例。
懒汉式:首先定义一个空的实例属性,然后再获得实例方法中创建实例。
注:懒汉式存在线程安全问题。
单例设计模式:一个类只能创建一个实例。
如何实现呢?以下4步。
1:私有化构造器,为了是只能在类内部创建实例,而不能在类外创建实例。
2:在类内部创建实例,私有化此实例。
3:公有的方法调用此实例,通过类调用,因此设置为static ,同时此实例也设置为static
饿汉式:
public class SingletonTest { public static void main(String[] args) { Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); // 测试此单例创建的两个对象是否为同一个对象 System.out.println(s1 == s2); } } //单例模式之饿汉式 class Singleton { // 1:私有化构造器,使得此类只能在类内部创建实例,而不能在类外部创建实例 private Singleton() { } // 2:在类内部创建一个实例 private static Singleton instance = new Singleton(); // 3:私有化此实例,通过公共的方法调用。 // 4:此公共的方法,通过类调用,因此设置为static,同时此实例也设置为static public static Singleton getInstance() { return instance; } }
输出的结果为:true
说明s1和s2两个引用指向内存中的同一个地址。即创建的是同一个对象。
懒汉式:
public class SingletonTest { public static void main(String[] args) { Singleton s1 = Singleton.getInstance(); Singleton s2 = Singleton.getInstance(); // 测试创建的两个对象是否为同一个对象 System.out.println(s1 == s2); } } //单例模式之懒汉式 class Singleton { // 2:在类内部创建一个实例 private static Singleton instance = null; // 1:私有化构造器,使得此类只能在类内部创建实例,而不能在类外部创建实例 private Singleton() { } // 3:私有化此实例,通过公共的方法调用。 // 4:此公共的方法,通过类调用,因此设置为static,同时此实例也设置为static public static Singleton getInstance() { if(instance == null) { instance = new Singleton(); } return instance; } }
输出的结果为:true
说明s1和s2两个引用指向内存中的同一个地址。即创建的是同一个对象。
饿汉式和懒汉式的区别:创建实例时间不同
饿汉式:一开始定义实例属性时就创建实例。
懒汉式:首先定义一个空的实例属性,然后再获得实例方法中创建实例。
注:懒汉式存在线程安全问题。
相关文章推荐
- 单例设计模式(饿汉式和懒汉式)
- 黑马程序员-面向对象-06天-6(单例设计模式-饿汉式,懒汉式)
- JAVA单例设计模式(饿汉式和懒汉式的区别)
- 设计模式——单例模式(饿汉式、懒汉式)
- 单例设计模式中懒汉式和饿汉式
- JAVA基础——单例设计模式(饿汉式与懒汉式)
- 黑马程序员--懒汉式和饿汉式单例设计模式
- 黑马程序员一单例设计模式的饿汉式与懒汉式以及加锁的情况
- 设计模式——单例模式(饿汉式、懒汉式)
- 【单例设计模式】懒汉式跟饿汉式的区别
- java单例设计模式 饿汉式 懒汉式
- (单例设计模式中)懒汉式与饿汉式在多线程中的不同
- Java模式设计之单例模式, 接上篇【饿汉式,懒汉式】
- 黑马程序员——java小结_007_单例设计模式(懒汉式、饿汉式)
- 《单例设计模式之饿汉式和懒汉式》
- Java 单例设计模式(懒汉式 饿汉式)
- java设计单例模式【饿汉式和懒汉式】
- 设计模式--单例模式(一)懒汉式和饿汉式
- Java设计模式中的单例模式的懒汉式和饿汉式
- 单例设计模式(懒汉式和饿汉式区别)