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