首页 > 代码库 > java之设计模式
java之设计模式
设计模式分类比较多,这里先学习单例模式
单例模式:在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。分为饿汉式、赖汉式等
我们上下代码:
1 package com.learn.chap03.sec18; 2 3 public class Singleton1 { 4 5 /** 6 * 构造方法私有 7 */ 8 private Singleton1(){ 9 10 }11 12 /**13 * 饿汉式单例实现14 */15 private static final Singleton1 single1 = new Singleton1();16 17 /**18 * 静态工厂方式19 */20 public static Singleton1 getInstance(){21 return single1;22 }23 24 }
1 package com.learn.chap03.sec18; 2 3 public class Singleton2 { 4 /** 5 * 构造方法私有 6 */ 7 private Singleton2(){ 8 9 }10 11 /**12 * 赖汉式单例实现 在第一次调用的时候实例化13 */14 private static Singleton2 single;15 16 /**17 * 工厂18 */19 public synchronized static Singleton2 getInstance(){20 if(single==null){21 // 第一次调用的时候实例化22 System.out.println("第一次调用的时候实例化");23 single = new Singleton2();24 25 }26 return single;27 }28 }
1 package com.learn.chap03.sec18; 2 3 public class TestSingleton { 4 5 public static void main(String[] args) { 6 Singleton1 singleton1 = Singleton1.getInstance(); 7 Singleton1 singleton2 = Singleton1.getInstance(); 8 System.out.println("饿汉式:"+(singleton1 == singleton2)); 9 10 TestSingleton t1 = new TestSingleton();11 TestSingleton t2 = new TestSingleton();12 System.out.println((t1 == t2));13 14 Singleton2 singleton3 = Singleton2.getInstance();15 Singleton2 singleton4 = Singleton2.getInstance();16 System.out.println("懒汉式:"+(singleton3 == singleton4));17 18 }19 20 }
运行结果
饿汉式:true
false
第一次调用的时候实例化
懒汉式:true
注意:
饿汉式与懒汉式的区别是:饿汉式在初始化单例对象时,就已经实例化了,而懒汉式只有在第一次调用工厂初始化方法的时候才实例化,以后不再进行实例化
java之设计模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。