您的位置:首页 > 编程语言 > Java开发

Java与设计模式(04)--单例模式

2012-12-20 23:55 239 查看
单例模式是个非常简单的设计模式,设计目的就是使得目标类仅能创建一个实例。

需要实现这个设计目标我们需要做如下工作:

由于只能有一个实例,我们不能暴露默认的public构造方法(不能有任何一个public构造方法,即将默认的构造方法使用private隐藏起来),否则可以用new创建实例;
由于我们没有构造方法,我们需要通过一个静态的getInstance方法获得一个类的实例;
具体实现需要考虑到多线程的同步问题;

具体代码如下:

单例类:

package com.freesoft.designpattern.singleton;

public class Singleton {
// 保存唯一一份实例
private static Singleton instance = null;

// 隐藏默认构造方法,这样别人无法通过调用new Singleton()来创建对象实例
private Singleton() {
}

// 需要使得方法是同步方法,防止多线程同时调度时可能发生的问题
public static synchronized Singleton getInstance() {
if (null == instance) {
instance = new Singleton();
}
return instance;
}
}


测试类:

package com.freesoft.designpattern.singleton;

public class SingletonTest {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
System.out.println(singleton);

// 如果是通过new创建的对象,打印出来的对象地址肯定是不一样的
// 这里一样说明通过getInstance方法得到的对象是同一个对象
singleton = Singleton.getInstance();
System.out.println(singleton);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息