zoukankan      html  css  js  c++  java
  • 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 || 点返回首页

  • 相关阅读:
    hdu 4339 Query 一道挺好的树状数组题(树状数组+二分思想)
    hdu 1133 Buy the Ticket(递推+精度精算)
    hdu 1267 下沙的沙子有几粒?(二维递推题)
    hdu 3397 Sequence operation(线段树的延迟标记)
    hdu 1258(dfs)
    hdu 3911 Black And White(线段树的延迟标记法)
    hdu 4148 Length of S(n) (坑爹的规律题)
    hdu 1016(一道经典的dfs)
    如何建立一棵哈夫曼树并且输出压缩码
    Codeforces Round #588 (Div. 2) E. Kamil and Making a Stream(DFS)
  • 原文地址:https://www.cnblogs.com/aeon/p/7698203.html
Copyright © 2011-2022 走看看