单例设计模式:
单例模式有以下特点:
1、单例类只能有一个实例。
2、单例类必须自己创建自己的唯一实例。
3、单例类必须给所有其他对象提供这一实例。
代码实现:
假设text变量是计算机的唯一资源,只有一份,不可同时拥有多个值(比如播放器,打印机资源),需要使用单例类的实例来对其使用。
public class Singleton_Pattern {
private String text = "aaaa"; //只有一份,不可同时拥有多个值
private static Singleton_Pattern instance = null; //类对象
private Singleton_Pattern(){} //构造方法
public static Singleton_Pattern getInstance() { //获取类对象
if (instance == null) { //判断对象是否存在
instance = new Singleton_Pattern();
}
return instance;
}
public void rename(){ //修改text变量
text="bbbb";
}
protected String gettext() { //获取text变量
return text;
}
}
使用主函数调用:
class A {
public static void main(String[] args) {
Singleton_Pattern instance1 = Singleton_Pattern.getInstance(); //创建对象实例1
Singleton_Pattern instance2 = Singleton_Pattern.getInstance(); //创建对象实例2
System.out.println(instance2.gettext()); //实例1输出text,输出为aaaa
instance1.rename(); //实例2修改text
System.out.println(instance2.gettext()); //实例1输出text,输出为bbbb
}
}
虽然创建了两个实例instance1和instance2,但是instance1和instance2是相同的实例。修改一个,唯一资源发生改变。
输出结果:
完整代码:
public class Singleton_Pattern {
private String text = "aaaa";
private static Singleton_Pattern instance = null; //类对象
private Singleton_Pattern(){}
public static Singleton_Pattern getInstance() { //获取类对象
if (instance == null) { //判断对象是否存在
instance = new Singleton_Pattern();
}
return instance;
}
public void rename(){ //修改text变量
text="bbbb";
}
protected String gettext() { //获取text变量
return text;
}
}
class A {
public static void main(String[] args) {
Singleton_Pattern instance1 = Singleton_Pattern.getInstance();
Singleton_Pattern instance2 = Singleton_Pattern.getInstance();
System.out.println(instance2.gettext());
instance1.rename();
System.out.println(instance2.gettext());
}
}



