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);//打印发现,两个资源号完全一样
  • 相关阅读:
    ImageMagick出错/undefined in findresource
    只对目录更改权限的办法(xarg)
    关于linux下php环境
    php 上传大文件
    做下载系统时的一些HTML文件头
    POJ 1694 An Old Stone Game ★(排序+树+递归)
    POJ 1991 Turning in Homework ★(区间DP)
    POJ 2452 Sticks Problem ★ (单调栈+RMQ)
    HDU 2069 Coin Change (母函数)
    HDU 2069 Coin Change (母函数)
  • 原文地址:https://www.cnblogs.com/hangxing1996/p/6689089.html
Copyright © 2011-2022 走看看