java-day08-单例设计模式

8.1 设计模式

设计模式:解决某一种问题的思想,是一种行之有效的解决方法。
23种模式。

8.2 单例设计模式-思想

解决的问题:保证一个类的对象在内存中的唯一性。
应用场景:多个程序都在操作同一个配置文件时,需要程序A操作后结果,程序B要知道并继续基于A操作后的结果进行操作。
前提:数据都存储在配置文件对象中,要求程序A和程序B操作的配置文件对象是同一个。

思路

  1. 问题是其他程序都可以通过new创建该类的对象,无法控制数量。所以,不让其他程序new不就行了吗。
  2. 那第一步的问题也就产生了,那其他程序不就没有对象了吗?干脆,在本类中自己new一个本类对象。这样的好处是,不让别的程序new,自己new,可以实现数量控制。
  3. 对外提供让其他程序获取该对象的方式!

步骤

  1. 不让其他程序new该类对象?可以将类中的构造函数私有化。
  2. 在本类中new一个对象。
  3. 定义一个方法返回该对象。

代码体现

public class Single {

    private Single(){}  //1.构造函数私有化
    private static Single s = new Single();     //2.创建一个本类对象
    public static Single getInstance(){    //3.定义一个方法返回该对象,让该程序可以获取到。
        return s;
    }
}

class testSingle{
    public static void main(String[] args){
        Single s1 = Single.getInstance();
        Single s2 = Single.getInstance();//s1和s2指向同一个对象
    }
}

8.3 单例设计模式-代码细节

static Single getInstance(){    //3.定义一个方法返回该对象,让该程序可以获取到。
        return s;
    }

之所以定义一个方法访问,就是为了可控。

8.4 单例设计模式-懒汉与饿汉

第一种,饿汉式。
在加载类的时候就创建对象(static的原因)。

public class Single {

    private Single(){} 
    private static Single s = new Single();   
    public static Single getInstance(){   
        return s;
    }
}

另一种形式,懒汉式。
延迟加载方式,在调用getInstance时候才创建对象,且只会创建一次,保证对象唯一性。

public class Single {
    private static Single s = null;
    private Single(){}
    public static Single getInstance(){
        if(s==null)
            s = new Single();
        return s;
    }
}

8.4 单例设计模式-应用

呼唤超人。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值