JAVA学习(单例设计模式)

一、单例设计模式

解决的问题:可以保证一个类在内存中的对象唯一性。

例如:

必须对多个程序使用同一配置信息对象时,就需要保证该对象的唯一性

 

如何保证对象的唯一性:

1.不允许其他程序使用new创建该类对象。(私有化该类构造函数。其他程序无法创建该类对象,因为构造函数无法访问)

2.在该类中创建一个本类实例。

3.对外提供一个方法让其他程序可以获取该对象。(定义一公有的方法,将创建的对象返回)

代码例子:

饿汉模式,在类创建的时候,对象就已经存在了

public class Single {
    private int num;
    private static Single s = new Single();      //在该类中创建一个本类实例
    private Single(){}           //私有化该类构造函数
    public static Single getInstance() {     //对外提供一个方法让其他程序可以获取该对象
        return s;
    }

    public int getNum() {
        return num;
    }

    public void setNum(int num) {
        this.num = num;
    }
}


public class SingleDemo{
    public static void main(String[] args){
        Single s1 = Single.getInstance();
        Single s2 = Single.getInstance();

        s1.setNum(10);
        s2.setNum(20);

        System.out.println(s1.getNum());
        System.out.println(s2.getNum());
    }
}    

运行结果:

 

 

 对象s1与s2使用的是一个对象实例;

 

懒汉模式:类加载进来的时候还没有对象,只有调用了getInstance方法时,才会创建对象

(在多线程并发访问的时候,可能无法保证对象的唯一性)

public class Single {
    private int num;
    private static Single s = null;      //在该类中创建一个本类实例
    private Single(){}           //私有化该类构造函数
    public static Single getInstance() {     //对外提供一个方法让其他程序可以获取该对象
        if(s==null){
       s = new Single();
     }
     return s; }

 

posted @ 2021-03-26 17:23  金芒果决斗  阅读(58)  评论(0)    收藏  举报