java中目前有几十种设计思路的模板,其中一种设计模式就是单例模式。
单例模式就是某类中只使用一个对象来完成程序的模式。
若要达成这个,首先则必须要让类无法new出第二个对象。
那么如何让其不能创建第二个对象呢,就是私有化构造方法,以及创建唯一的对象。
但是做到这些,还不够,因为我们还要通过这个对象提供一个对外的访问,这个时候我们就要用静态方法来实现了。
eg.
class Person{
String name; //对象特有属性(堆区内)
private Person(){ //私有化构造方法,让别人无法通过Person类直接创建对象
}
static Person one=new Person(); //静态这个唯一的对象,(静态区(方法区)内)
public static Person getDanli(){ //静态方法(静态区(方法区)内)
return one; //返回对象one的内存地址
}
}
public class Study{
public static void main(String[] args){
Person a=Person.getDanli(); //通过静态类方法访问one的内存地址,并赋给a;
a.name="加油"; //a和one是同一个内存地址,a.name==one.name;
Person b=Person.getDanli(); //通过静态类方法访问one的内存地址,并赋给b;
System.out.println(b.name); //b.name==a.name==one.name;
}
}
输出结果为 加油
学了这个之后,我有个疑问,既然这样,综合之前学到的内容,static使用,直接用Person.name访问不是更方便。单例模式的意义何在呢?
(以下内容来自百度查找)
1.控制资源的使用,通过线程同步来控制资源的并发访问;
2.控制实例产生的数量,达到节约资源的目的。
3.作为通信媒介使用,也就是数据共享,它可以在不建立直接关联的条件下,让多个不相关的两个线程或者进程之间实现通信。



