您的位置 首页 java

创建型设计模式-单例模式

默认整个系统只有一个对象。分懒汉式和饿汉式

懒汉式和饿汉式

 /**
 * 懒汉式 单例模式
 * 在第一次调用getInstance()方法的时候才会去实例化一个对象
 */
public class SingletonDemo {
    //属性可以忽略 只是为了验证测试数据使用
    private String userName ;

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    //2.定义一个对象变量
    private static SingletonDemo singletonDemo = null;
    //1.私有化构造方法
    private SingletonDemo() {
    }

    //3.提供一个实例化的静态方法
    public static SingletonDemo getInstance(){
        if (singletonDemo == null) {
            SingletonDemo demo = new SingletonDemo();
            demo.setUserName("SingletonDemo");
            singletonDemo = demo;
        }
        return singletonDemo;
    }
}
/**
 *  饿汉式 单例模式  初始化对象 提供外界调用
 */
class SingletonDemo2{

  //属性可以忽略 只是为了验证测试数据使用
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    //2.初始化一个对象
    private static final SingletonDemo2 demo2 = new SingletonDemo2("SingletonDemo2");

    //1.私有化构造方法
    private SingletonDemo2() {
    }

    private SingletonDemo2(String name) {
        this.name = name;
    }

    //3.提供对外的获取对象方法
    public static SingletonDemo2 getInstance(){
        return demo2;
    }
}

class Demo{
    public static void main(String[] args) {
        SingletonDemo instance = SingletonDemo.getInstance();
        SingletonDemo instance1 = SingletonDemo.getInstance();
        System.out.println(instance);
        System.out.println(instance1);
        System.out.println(instance1 == instance);

        SingletonDemo2 instance2 = SingletonDemo2.getInstance();
        SingletonDemo2 instance3 = SingletonDemo2.getInstance();
        System.out.println(instance2);
        System.out.println(instance3);
        System.out.println(instance2 == instance3);
    }
}
//结果
com.wangguo.singleton.SingletonDemo@1d44bcfa
com.wangguo.singleton.SingletonDemo@1d44bcfa
true
com.wangguo.singleton.SingletonDemo2@266474c2
com.wangguo.singleton.SingletonDemo2@266474c2
true  

文章来源:智云一二三科技

文章标题:创建型设计模式-单例模式

文章地址:https://www.zhihuclub.com/182400.shtml

关于作者: 智云科技

热门文章

网站地图