您的位置:首页 > 其它

设计模式之单例模式

2016-07-04 01:52 302 查看
单例模式的定义:确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。

具体代码实现:

package SingleObjectModel;
/**
* 单例模式
* @author minGe_000
*
*/
public class Student {
public String name;
//1.构造方法私有化
private Student(){}
private Student(String name){
this.name = name;
}
//2.提供唯一的对象
private static Student stu;
//3.提供一个get实例的函数
public static synchronized Student getInstance(String n){
if(stu==null){
stu = new Student(n);
}
return stu;
}
}

其中构造方法私有化是为了限制产生多个对象;

里面的静态方法是为了获取唯一的实例对象;

注意问题在多个线程同时执行的时候,如

new Thread(){
public void run() {
Student stu = Student.getInstance("abc");
};
}.start();
new Thread(){
public void run() {
Student stu1 = Student.getInstance("abc");
};
}.start();因为对象的初始化话需要时间在进行if(stu==null)判断时候俩个线程可能同时判断为真继续运行下去,此时在内存中就回有两个对象了,因此在线程方法前加synchronized 关键字来解决线程不安全因素(饿汉式)。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: