java设计模式之singleton模式编程

【需求说明】:请编写一个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 }
单击"+"查看

如有任何疑问可联系邮箱: 给我发邮件、或直接联系QQ:1584875179 || 点返回首页

原文地址:https://www.cnblogs.com/aeon/p/7698203.html