zoukankan      html  css  js  c++  java
  • 设计模式之单例设计模式(最初)

    设计模式之单例设计模式(最初版)
    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;
        }
    }
  • 相关阅读:
    CentOS6.5下安装Redis2.8.6和phpredis2.2.4扩展
    Centos系统安装 phpredis 扩展
    在centos6.3用yum安装redis
    CentOS 安装图形化界面方法
    解决Eclipse中文乱码
    apache mod_alias模块功能介绍
    php 使用serialize() 和 unserialize() 让对象成超级变量
    eclipse导入php项目
    php多文件上传类(含示例)
    PHP多图片上传类推荐
  • 原文地址:https://www.cnblogs.com/DiZhang/p/12545092.html
Copyright © 2011-2022 走看看