zoukankan      html  css  js  c++  java
  • php 设计模式

    概述:

         作为对象的创建模式,单例确保某一个内在系统中只存在一个实例,它不可以创建副本。
    克隆函数(__clone )以及构造函数(__construct )必须声明为私用, 防止外部程序 创建一个新类 ,而失去单例模式的意义。

    PHP 语言是一种解释型的语言,在页面执行完成后,所有的相关资源都会被回收。PHP在语言级别上,不能像C#,JAVA编译型语言一样,没办法让某个对象长距内存。
    然而在单一请求场景时,还是可以通过单例模式来共享对象,比如数据库连接对象。


    class DbConnection
    {
    
        private static $_instance;
        private static $token = 0;
    
        public static function  getInstance()
        {
            if (static::$_instance instanceof DbConnection) {
                return static::$_instance;
            }
            // 随机生产一个 token 标示当前内
            static::$token = rand(100, 1000);
            static::$_instance = new DbConnection();
            return static::$_instance;
        }
    
    
        // 克隆函数以及构造函数必须声明为私用,
        // 防止外部程序 创建一个新类 ,而失去单例模式的意义。
        private function  __clone()
        {
    
        }
    
        private function  __construct()
        {
    
        }
    
        public function  open()
        {
            echo "init times:" . static::$token . '<br/>';
        }
    
    
    }
    

      

    单例与static 类的 比较:

       1、singleton 能够很好的保持对象的面相对象,比如静态工具类则可以使用 static。
    2、单例可以实现自某接口,可以继承自某类。静态类也可以继承自某类,但是就没法使用父类里面的protect成员了。


  • 相关阅读:
    学生免费注册Pycharm
    CSS笔记
    加载CIFAR数据集时报错的大坑
    发布小程序
    微信中的动图如果发朋友圈
    安卓第一个小项目
    转换小写字母
    1小时搞定vuepress快速制作vue文档/博客+免费部署预览
    干货满满!如何优雅简洁地实现时钟翻牌器(支持JS/Vue/React)
    JavaScript 加减危机——为什么会出现这样的结果?
  • 原文地址:https://www.cnblogs.com/rhythmK/p/5520271.html
Copyright © 2011-2022 走看看