黑马程序员技术交流社区
标题:
单例模式
[打印本页]
作者:
高泳
时间:
2014-9-24 23:11
标题:
单例模式
/*
设计模式:解决某一类问题最行之有效的方法。
java中23种设计模式
单例设计模式:解决一个类在内存中只存在一个对象。
*/
/*
1,为了避免其他程序过多简历该类对象,先禁止其他程序建立该对象。
2,还为了让其他程序可以访问到该类对象,只好在本类中自定义一个对象。
3,为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
代码体现:
1,将构造函数私有化。
2,在类中创建一个本类对象。
3,提供方法可以获取到该对象。
*/
class Single_1 //饿汉式
{
private int num;
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return this.num;
}
private Single_1(){}
private static Single_1 s = new Single_1();
public static Single_1 getInstance()
{
return s;
}
}
class Single_2 //懒汉式
{
private int num;
public void setNum(int num)
{
this.num = num;
}
public int getNum()
{
return this.num;
}
private Single_2(){}
private static Single_2 s = null;
public static Single_2 getInstance()
{
if(s == null)
{
synchronized(Single_2.class)
{
if(s == null)
s = new Single_2();
}
}
return s;
}
}
class SingleDemo
{
public static void main(String[] arg)
{
Single_1 s1 = Single_1.getInstance();
Single_1 s2 = Single_1.getInstance();
System.out.println(s2.getNum());
s1.setNum(30);
System.out.println(s2.getNum());
Single_2 s3 = Single_2.getInstance();
Single_2 s4 = Single_2.getInstance();
System.out.println(s4.getNum());
s3.setNum(30);
System.out.println(s4.getNum());
}
}
复制代码
作者:
刘蕴学
时间:
2014-9-24 23:19
懒汉式的双检测性能不好,你可以考虑一下静态内部类,也可以实现单例
作者:
不系之舟王
时间:
2014-9-24 23:25
我也看到这了,觉得好奇妙啊
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2