zoukankan      html  css  js  c++  java
  • 1 单例设计模式

    单例模式是指整个应用中类只有一个对象实例的设计模式。

    使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。

    私有构造函数保证了不能通过构造函数来创建对象实例,只能通过公有静态函数返回唯一的私有静态变量。

    每次用 new 类名 的方式,就可以创建一个对象。我们必须禁止外部程序用 new 类名的方式来创建多个实例。

    解决办法是:我们将构造函数设置成 private ,让构造函数只能在内部被调用,而外部不能调用。这样,这个类就不能被外部用 new 的方式建立多个实例了。

    经典的设计模式主要有2种:懒汉式和饿汉式。下面分别展示代码。

    懒汉式:

    懒汉式单例模式既在需要的时候才创建单例对象,即“用时间换空间”。

    //懒汉式
    class Single {
        static private $instance = null;//声明一个静态变量(保存在类中唯一的一个实例)
        private function __construct(){//声明私有构造方法为了防止外部代码使用new来创建对象。
    
        }
    
        static public function getInstance(){//声明一个getInstance()静态方法,用于检测是否有实例对象
            if(self::$instance == null) {
                self::$instance = new self();
            }
            return self::$instance;
        }
    }
    $instance = Single::getInstance();//得到实例

    饿汉式:

    饿汉式的特点是一开始就创建实例,即“用空间换时间”

    php有一个特性,不支持在类定义时给类的成员变量赋予非基本类型的值。如表达式,new操作等等。故我目前还无法实现php的饿汉式单例。下面用Java实现一下:

    //饿汉式单例模式
    public class Single2 {
        //设立静态变量,直接创建实例
        private static Single2 Single = new Single2();
     
        private Singlet2(){
            //私有化构造函数
    
        }
        
        //开放一个公有方法,返回实例
        public static Single2 getInstance(){
            return Single;
        }
    }
  • 相关阅读:
    1.常用命令
    虚拟机共享文件夹
    Docker安装 和简单使用
    js方法名通过参数传递调用实例
    highcharts参数说明
    绘制HightCharts饼状图
    附加数据库失败,操作系统错误 5:”5(拒绝访问。)”的解决办法
    ckeditor相关使用
    针对MySQL提高百万条数据的查询速度优化
    SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
  • 原文地址:https://www.cnblogs.com/xlzfdddd/p/10540107.html
Copyright © 2011-2022 走看看