饿汉式
注:所谓饿汉式,就是还没用就提前准备好该类对象。
- 定义一个类变量记住类的一个对象
- 把类的构造器私有
- 定义一个类方法,返回类对象
设计示例:
A类
package suziguang_d5_singleInstance;
public class A {
private static A a = new A();
private A()
{}
public static A getA()
{
return a;
}
}
测试类
package suziguang_d5_singleInstance;
public class Test {
public static void main(String[] args) {
// A a = new A(); //error
A a1 = A.getA();
A a2 = A.getA();
A a3 = A.getA();
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
}
}
输出结果
懒汉式
注:所谓懒汉式,就是什么时候用什么时候才去生成对象。
- 定义一个类对象,空
- 把类的构造器私有
- 提供一个类方法,保证返回的是同一个对象
设计示例:
B类
package suziguang_d5_singleInstance;
public class B {
private static B b = null;
private B() {}
public static B getB()
{
if(b == null) b = new B();
return b;
}
}
测试类
package suziguang_d5_singleInstance;
public class Test_B {
public static void main(String[] args) {
B b1 = B.getB();
B b2 = B.getB();
System.out.println(b1);
System.out.println(b2);
}
}
输出结果