【需求说明】:请编写一个Singleton模式的程序
【需求分析】:Singleton模式的主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录数据库连接都需要这样的单线程操作。使用Singleton的好处还在于可以节省内存,因为它限制了实例的个数,有利于Java垃圾回收。一般Singleton模式通常的形式为:定义一个类,它的构造函数为private的,它由一个static的private变量,在类初始化时实例化,通过一个public的getInstance方法获取对它的引用,继而调用其中的方法。
【需求实现】:直接进入源码,源码注释已经很详细了
1 ==========【饿汉式】========== 2 package edu.aeon.model.singleton; 3 4 /** 5 * 6 * @author lzj 7 * @create 2017年10月20日 上午10:00:13 8 * @describe 单例模式之饿汉式 9 */ 10 public class Singleton1 { 11 /** 12 * 【说明】构造私有化,防止除过本类以外的类实例化该对象 13 * 只能通过本类提供的特定方法去去调用 14 */ 15 private Singleton1() { 16 } 17 /** 18 * 【说明】内部实例化Singleton对象 19 */ 20 private final static Singleton1 instance=new Singleton1(); 21 /** 22 * 【说明】:提供供外部访问的静态方法 23 * at 2017年10月20日 上午7:59:32 by lzj 24 * @parameters1 无 25 * @return Singleton 26 */ 27 public static Singleton1 getInstance() { 28 return instance; 29 } 30 /** 31 * 32 * at 2017年10月20日 上午8:03:55 by lzj 33 * @parameters1 String[] args 34 * @return void 35 */ 36 public static void main(String[] args) { 37 38 } 39 } 40 ==========【懒汉式】========== 41 package edu.aeon.model.singleton; 42 43 /** 44 * @author lzj 45 * @create 2017年10月20日 上午9:39:07 46 * @describe 单例模式之懒汉式 47 */ 48 public class Singleton2 { 49 /** 50 * 【说明】构造私有化,防止除过本类以外的类实例化该对象 51 * 只能通过本类提供的特定方法去去调用 52 */ 53 private Singleton2() { 54 55 } 56 private static Singleton2 instance=null; 57 /** 58 * at 2017年10月20日 上午9:39:07 by lzj 59 * @Parameters1 无 60 * @Returns void 61 */ 62 private static synchronized Singleton2 getInstance() { 63 //使用时生成实例,提高了效率 64 if(instance==null) { 65 instance = new Singleton2(); 66 } 67 return instance; 68 } 69 /** 70 * 71 * at 2017年10月20日 上午10:03:56 by lzj 72 * @Parameters1 String[] args 73 * @Returns void 74 */ 75 public static void main(String[] args) { 76 77 } 78 79 }