项目结构:
运行效果:
=================================================
代码部分:
=================================================
/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 }
引用:“单例模式好似计划生育,生还是不生是自己的责任” 《大话设计模式》 程杰 著