1.单例设计模式
单例模式是指:一个类只有一个对象。比如:地球、太阳
对象的产生是通过 构造方法 产生对象 客户A也可以new、客户B也可以new……我们没有办法控制会产生多少对象 。那么如何限制对象的产生数量?
给构造方法加private权限
- private声明构造方法 ->类内部有效、类外部彻底构造不了对象
- 单例类内部应该提供一个产生好的静态对象。(如果产生的对象是非静态的,那么就与对象强相关需要通过外部的对象调用,但是类外部又不能new对象,所以此对象必须用static修饰)
- 单例内内部提供一个静态方法返回唯一的一个对象(非静态方法中不允许有静态方法)
1.1 饿汗式单例
class Singleton{
// 产生了唯一的一个对象 、通过类名直接调用 、类加载时实例化
private static final Singleton singleton = new Singleton();
//构造方法私有化、类外部创建不了对象
private Singleton(){
}
//类外部只能通过对象调用普通方法,但是类外部没有对象,所以此方法为静态方法
public static Singleton getInstance() {
return singleton;
}
}
public class Test {
public static void main(String[] args) {
Singleton singleton = Singleton.getInstance();
Singleton singleton1 = Singleton.getInstance();
// == 比较的是singleton与singleton1的地址
System.out.println(singleton == singleton1