• 设计模式之单例设计模式(最初)


    设计模式之单例设计模式(最初版)
    a) 解决的问题:创建唯一一个对象(使创建的对象具有唯一性)
    b) 设计思路:
    i. 只要构造函数是public修饰,就能被其他程序调用创建任意多个对象—》用private修饰构造函数
    ii. 唯一存在的对象怎么出现?–》直接在本类中new出来
    iii. 在本类new出来之后怎么提供给外界使用?提供对外的public方法;
    注意:既然不能通过对象来调用,那么只能通过类名来调用
    如果要想通过类名来调用方法,那么被调用的方法必须用static来修饰
    代码实现(饿汉式):

    Class Singleton {
    //1、私有化构造函数,不让外界随意创建对象;
    Private Singleton (){};
    //4、创建一个本类的对象,(本类中创建个数可控);由于s变成了静态的,外界调用s没必要再用方法了,这样就不行了,所以我们把s私有化,保证getInstance方法有效
    Private Static Singleton s = New Singleton ();
    //3、对外提供函数让外界可以获得本类的对象,由于方法加了static,静态方法中不能调用非静态成员变量,所以创建对象时需要加static
    Public static Singleton getInstance(){
       return s;
    }
    
    //测试方法
    Public void show(){ ...}
    }
    
    //测试类
    Class SingletonTest{
       Public static void main(String[] args){
    //2、调用函数获取对象,通过类名调用,所以在Singleton类中的方法上需要加static
    Singleton s1 = Singleton.getInstance();
    s1.show();
    }
    }
    

    懒汉式:类在加载的时候先不在堆内存中开辟空间,在需要使用对象的时候再创建

    class Single2 {
        private Single2(){}
        private static Single2 s2 = null;//初始化为null
        public static Single2  getInstance(){
            //判断对象是否为空,为空则创建
            if(s2==null){
                s2 = new Single2();
            }
            return  s2;
        }
    }
  • 相关阅读:
    UVA10763交换学生
    UVA10763交换学生
    UVA10391复合词
    UVA10391复合词
    UVA10125和集
    UVA10125和集
    POJ3762 时间段用k次
    POJ3762 时间段用k次
    Win64 驱动内核编程-11.回调监控进线程句柄操作
    Win64 驱动内核编程-11.回调监控进线程句柄操作
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12545091.html
Copyright © 2020-2023  润新知