zoukankan      html  css  js  c++  java
  • 让你一看就明白什么是单列模式(和静态静态工厂模式)java版本_源码下载

    项目结构:

    运行效果:

    =================================================

    代码部分:

    =================================================

    /Singleton/src/com/b510/singleton/Train.java

     1 /**
     2  * 
     3  */
     4 package com.b510.singleton;
     5 
     6 /**
     7  * 火车类
     8  * @author hongten(hongtenzone@foxmail.com)
     9  * @date 2013-2-22
    10  */
    11 public class Train {
    12 
    13     /**
    14      * 静态变量
    15      */
    16     private static Train train = new Train();
    17     
    18     /**
    19      * 这是Train的私有构造方法,在其他地方Train是不能够进行下面的操作:<br>
    20      * Train train = new Train();<br>
    21      * 也就是限制了Train本身生成多个对象
    22      */
    23     private Train(){
    24     }
    25     /**
    26      * 这里使用了静态工厂模式得到一个Train对象<br>
    27      * 在这个方法中,我们也可以添加一些其他限制条件,如:如果要<br>
    28      * new一个Train()对象,我们可以限制if(限制条件),然后再进行生成Train对象<br>
    29      *   <code>if("广州到北京"){</code><br>
    30      *           <code>return new Train();}</code><br>
    31      *   但是不管什么,最后得到的总是一个唯一的对象<code>train</code>
    32      * @return
    33      */
    34     public static Train getInstance(){
    35         return train == null ? new Train() : train ;
    36     }
    37 }

    /Singleton/src/com/b510/singleton/test/SingletonTest.java

     1 /**
     2  * 
     3  */
     4 package com.b510.singleton.test;
     5 
     6 import com.b510.singleton.Train;
     7 
     8 /**
     9  * 单例模式测试
    10  * 
    11  * @author hongten(hongtenzone@foxmail.com)
    12  * @date 2013-2-22
    13  */
    14 public class SingletonTest {
    15 
    16     public static void main(String[] args) {
    17         // 一辆普快列车
    18         Train train_PK = Train.getInstance();
    19         // 一辆特快列车
    20         Train train_TK = Train.getInstance();
    21 
    22         System.out.println(isSameTrain(train_PK, train_TK) ? "是同一辆列车" : "不是同一辆列车");
    23     }
    24 
    25     /**
    26      * 判断是否是同一辆列车
    27      * @param t1 
    28      * @param t2
    29      * @return 是同一辆列车返回true
    30      */
    31     public static boolean isSameTrain(Train t1, Train t2) {
    32         return t1 == t2;
    33     }
    34 
    35 }

    引用:“单例模式好似计划生育,生还是不生是自己的责任” 《大话设计模式》 程杰 著

    源码下载https://files.cnblogs.com/hongten/Singleton.zip

  • 相关阅读:
    认识与设计Serverless(二)
    认识与设计Serverless(一)
    log4j2动态修改日志级别及拓展性使用
    log4j2高级配置(1)
    log4j2介绍及配置
    Java 并发编程篇
    JAVA多线程之volatile 与 synchronized 的比较
    springboot分布式锁学习
    springboot2连接多数据库mysql+oracle
    Mysql的分页查询优化
  • 原文地址:https://www.cnblogs.com/hongten/p/hognten_singleton.html
Copyright © 2011-2022 走看看