/*
-
设计模式:对问题行之有效的解决方式,其实它是一种思想
-
1.单例设计模式
-
解决的问题:就是可以保证一个类在内存中的对象的唯一性
-
必须对于多个程序使用同一个配置信息对象时,就需要保证该对象的唯一性
-
如何保证对象的唯一性呢?
-
1.不允许其他程序用new创建该类对象
-
2.在该类创建一个本类实例
-
3.对外提供一个方法让其他程序可以获取该对象。
-
步骤:
-
1.私有话该类的构造函数
-
2.通过new在本类创建一个本类的对象
-
3.定义一个公有的方法,将创建的对象返回
-
单例设计的内存的理解:
-
内存中:栈、堆、方法区(方法列表和静态区)
-
*/
class Single{//简称饿汉式单例模式 --- 类一加载就存在了 --- 开发常用的 private static Single s = new Single();//成员变量私有化,以便可以控制 private Single(){}; public static Single getInstance(){ return s; } } public class SingleDemo { public static void main(String[] args){ Single s1 = Single.getInstance(); Single s2 = Single.getInstance(); System.out.println("s1"+s1+"\n"+"s2"+s2); TestSingle t1 = TestSingle.getInstance(); TestSingle t2 = TestSingle.getInstance(); t1.setNum(10); t2.setNum(20); System.out.println(t1.getNum()); System.out.println(t2.getNum()); } } class TestSingle{ private int num; //如果想要保证单例 private static TestSingle t = new TestSingle(); private TestSingle(){}; public static TestSingle getInstance(){ return t; } public void setNum(int num){ this.num = num; } public int getNum(){ return num; } }
/*
- 单例的另外一种表现形式: 简称懒汉式加载的单例模式
- */
class Single2{ //类加载进来没有对象,只有调用了getInstance方法时,才会创建对象
private static Single2 s = null;
private Single2(){};
public static Single2 getInstance()
{
if(s == null)
s = new Single2();
return s;
}
}
网友评论