1、饿汉式
1 package com.wisezone.singleton02; 2 /** 3 * java中有23种对象设计模式 4 * 单例设计模式:解决一个类中只存在一个对象 5 * @author 王东海 6 * @date. 2016年8月30日 7 * @version v1.0 8 */ 9 //饿汉式:先初始化对象。 10 public class Singleton 11 { 12 //private的构造器,不能在类的外部创建该类的对象 13 private Singleton() 14 { 15 16 } 17 18 //私有的,只能在类的内部访问 19 private static Singleton s = new Singleton(); 20 21 //getInstance()为static,不用创建对象即可访问 22 public static Singleton getInstance() 23 { 24 return s; 25 } 26 }
2、懒汉式
1 package com.wisezone.singleton02; 2 3 //懒汉式:对象是放在调用时,才初始化,也称为对象的延时加载 4 public class Singleton2 5 { 6 //1.将构造器私有化,保证在此类的外部,不能调用本类的构造器。 7 private Singleton2() 8 { 9 10 } 11 //2.先声明类的引用 12 //4.也需要配合static的方法,用static修饰此类的引用。 13 private static Singleton2 ss = null; 14 15 //3.设置公共的方法来访问类的实例 16 public static Singleton2 getInstance() 17 { 18 //3.1如果类的实例未创建,那些先要创建,然后返回给调用者:本类。因此,需要static 修饰。 19 if (ss == null) 20 { 21 ss = new Singleton2(); 22 } 23 //3.2 若有了类的实例,直接返回给调用者。 24 return ss; 25 } 26 27 }
3、测试结果
1 package com.wisezone.singleton02; 2 3 /** 4 * 测试单例的设计模式 5 * @author 王东海 6 * @date. 2016年8月30日 7 * @version v1.0 8 */ 9 public class Test 10 { 11 public static void main(String[] args) 12 { 13 //饿汉式测试 14 System.out.println("饿汉式测试结果:"); 15 Singleton sin = Singleton.getInstance();//访问静态方法 16 Singleton sin2 = Singleton.getInstance(); 17 System.out.println(sin); 18 System.out.println(sin2); 19 20 System.out.println(); 21 22 //懒汉式测试 23 System.out.println("懒汉式测试结果:"); 24 Singleton2 s1 = Singleton2.getInstance(); 25 Singleton2 s2 = Singleton2.getInstance(); 26 System.out.println(s1); 27 System.out.println(s2); 28 29 } 30 }
时间: 2024-10-10 10:49:31