------- android培训、java培训、期待与您交流! ----------------
设计模式,为了解决开发中的实际问题出现的思想
单例:解决一个类的对象,在内存的唯一性。这个类的对象,只有一个
实现单例设计模式的步骤:
A. 私有修饰构造方法
B. 在本类的成员位置,new自己类的对象
C. 提供一个静态方法,返回本类的对象
如果其他程序,需要这个类的对象,不能去new ,通过方法的返回值,获取该类对象
饿汉式:
package cn.itcast;
/*
* 此类实现一个单例设计模式
* 要求Single类的对象,是唯一的
* 饿汉式
*/
public class Single {
//私有构造方法
private Single(){}
//自己类的成员位置上,创建自己类的对象
private static final Single s = new Single();
//提供一个公共方法,静态的,返回这个变量s
public static Single getInstance(){
return s;
}
}
懒汉式:
public class Single{
//私有构造方法
private Single(){}
//类的成员位置,定义本类类型的变量,但是不建立对象
private static Single s = null;
//对外提供公共的静态方法,返回对象
public static Single getInstance(){
if(s == null)
//建立本类的对象
s = new Single();
return s;
}
}
测试类:
package cn.itcast;
/*
* 测试一下单例模式Single类
*/
public class SingleTest {
public static void main(String[] args) {
//获取、Single类的对象,使用静态方法,获取
Single s = Single.getInstance();
System.out.println(s);
Single s1 = Single.getInstance();
System.out.println(s1);
}
}
打印结果如下:
cn.itcast.Single@72ebbf5c
<a target=_blank href="mailto:cn.itcast.Single@72ebbf5c">cn.itcast.Single@72ebbf5c</a>
由打印结果可见s和s1的哈希值相同,
内存中只创建了一个实例对象,S 和S1两个引用指向一个实例对象
------- android培训、java培训、期待与您交流! -----------------