黑马程序员技术交流社区
标题:
单实例模式
[打印本页]
作者:
lygku
时间:
2015-6-24 12:50
标题:
单实例模式
/*
设计模式方式1;
几种模式综合在一起就是框架,有23种设计模式;
单例设计模式:
解决一个类在内存只存在一个对象。
想要保证对象唯一
1、为了避免其他程序过多建立该类对象,先禁止其他程序建立
2、还为了让其他可以访问该类对象,只要在本类中自定一个对象
3、为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式
如果用代码体现:
1、将 类中方法私有化: ---private关键字,其他程序无法建立对象
2、在类中创建一个本类对象 ---直接返回给外界一个对象,外界就不需要自己新建对象来访问,
而且也建不了,因为构造函数被私有化了,众所周知,声明对象必须运行构造函数进行初始化数据。
3、提供一个方法可以获取到该对象 ---其他都被私有化!
当需要将事物的对象保证在内存中唯一时,就将以以下三步加上即可;
*/
class Single{
private int num;
public void setNum(int num){
this.num=num;
}
public int getNum(){
return num;
}
//第一步 私有化构造函数,导致外界无法建立对象
private Single(){};
//第二步 --这个的格式和 int x = 。。。一样,Single 是类类型。
private static Single s = new Single();
//第三步 返回数据类型是 类类型,因为对象是类类型,因为没有其他对象可以调用,只能用类名掉调用,所以加static
// 其次要访问静态成员,就是第二步,所以第二步的对象也要静态,
public static Single getInstance(){
return s;
}
}
class SingleDemo{
public static void main(String[] args){
//可以在本类中的声明一个对象
//SingleDemo s0 = new SingleDemo();
//返回的是类类型的对象
Single s1 = Single.getInstance();
Single s2 = Single.getInstance();
//SingleDemo s2 = new SingleDemo();
s1.setNum(20);
System.out.println(s2.getNum()); //结果是20,si s2在内存中共用一个对象
}
}
复制代码
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2