php设计模式

整体来讲设计模式分为三大类:php

  1. 建立型模式---共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
  2. 结构型模式---共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
  3. 行为型模式---共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式

下面,简单介绍几种设计模式:设计模式

单例模式this

  • 单例模式,是一种经常使用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。经过单例模式能够保证系统中一个类只有一个实例。即一个类只有一个对象实例。
  • 优势:
    1、实例控制:单例模式会阻止其余对象实例化其本身的单例对象的副本,从而确保全部对象都访问惟一实例。
    2、灵活性:由于类控制了实例化过程,因此类能够灵活更改实例化过程。
  • 缺点
    1、开销
    虽然数量不多,但若是每次对象请求引用时都要检查是否存在类的实例,将仍然须要一些开销。能够经过使用静态初始化解决此问题。
    2、可能的开发混淆
    使用单例对象(尤为在类库中定义的对象)时,开发人员必须记住本身不能使用new关键字实例化对象。由于可能没法访问库源代码,所以应用程序开发人员可能会意外发现本身没法直接实例化此类。设计

    <?php
       //单例
       class Log
       {
           //建立静态私有的变量保存该类对象
           static private $instance;
           //参数
           private $config;
       
           //防止直接建立对象
           private function __construct($config){
               $this->config = $config;
               echo "我已经被实例化了-";
           }
       
           //防止克隆对象
           private function __clone(){}
       
           public static function getInstance($config){
               //判断$instance是不是Log的对象
               //没有则建立则建立
               if (!self::$instance instanceof self) {
                   self::$instance = new self($config);
               }
               return self::$instance;
           }
       
           public function getName(){
               echo $this->config;
           }
       }
       
       $db1 = Log::getInstance('实例化1');
       $db1->getName();
       echo "<br>";
       $db2 = Log::getInstance('实例化2');
       $db2->getName();
       
       ?>
       
       运行结果:
           我已经被实例化了-实例化1
           实例化2
相关文章
相关标签/搜索