zoukankan      html  css  js  c++  java
  • [设计模式]PHP设计模式之单例模式

    面试最常见的问题之一就是  请问您知道哪些设计模式
    这次先介绍最经典的单例模式.
    单例模式分3种:懒汉式单例、饿汉式单例、登记式单例。
    单例模式有以下3个特点:
    1.只能有一个实例。
    2.必须自行创建这个实例。
    3.必须给其他对象提供这一实例。
    单例模式的优缺点:
    优点:
    1. 改进系统的设计
    2. 是对全局变量的一种改进
    缺点:
    1. 难于调试
    2. 隐藏的依赖关系
    3. 无法用错误类型的数据覆写一个单例

    不多废话,直接上代码. 有注释 

    <?php
    class Model
    {
        public static $instance;//模式的关键,一个静态变量,储存自身
        public static function getInstance()
        {
            if(!static::$instance)static::$instance = new Model();//如果常量不存在(第一次使用才会执行),则实例化(懒汉模式,不调用则不实例化)
            return static::$instance;//不管是第一次或是第n次.$instance都已经被初始化
        }
        private function __construct(){}
        private function __clone(){}
        public function getData()
        {
            return 'data';
        }
         
    }
    //$model = new Model();//报错,因为不允许直接实例化,也不允许克隆
    $smodel = Model::getInstance();//调用一次
    $smodel2 = Model::getInstance();//再调用一次
    var_dump($smodel,$smodel2);//打印发现,两个资源号完全一样
  • 相关阅读:
    JS运动---运动基础(匀速运动)
    浅谈浏览器解析 URL+DNS 域名解析+TCP 三次握手与四次挥手+浏览器渲染页面
    浅谈JS重绘与回流
    浅谈JS函数节流及应用场景
    浅谈JS函数防抖及应用场景
    前端模块化(CommonJs,AMD和CMD)
    Git之SSH公钥与私钥
    vi/vim编辑器必知必会
    git笔录
    vue移动端弹框组件,vue-layer-mobile
  • 原文地址:https://www.cnblogs.com/hangxing1996/p/6689089.html
Copyright © 2011-2022 走看看