您当前的位置: 首页 >  php

知其黑、受其白

暂无认证

  • 0浏览

    0关注

    1250博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

PHP设计模式

知其黑、受其白 发布时间:2021-04-22 10:06:29 ,浏览量:0

PHP设计模式

设计模式就是一些 编程的套路,不是具体的攻防动作,是为设计更好系统设计的解决方案。

面向对象的原则是 “组合优于继承”,因为组合可以以多种方式动态的处理任务。

虽然对象的组合会导致代码的可读性下降,但会让系统更加灵活,复用性更高。

设计模式是很多前辈花费大量精力总结的经验,是经过检验的高效的一系列对象组合方式。

共12种经典的设计模式

在这里插入图片描述

参考资料

Design Patterns in Java Tutorial

图说设计模式 PHP常用设计模式 1、单例模式指在整个应用中只有一个对象实例的设计模式
class Single {
    public $rand;
    static private $instance; // 类直接调用
    final private function __construct() 
    { // private防止外部new
        $this->rand = mt_rand(1, 100);
    }
    static public function getInstance() 
    {
        if (!self::$instance) { // 判断$instance是否赋值
            self::$instance = new self;
        }
        return self::$instance; 
    }
}
$obj1 = Single::getInstance();
$obj2 = Single::getInstance();
var_dump($obj1 === $obj2); // true
2、工厂模式指通过工厂类调用自身静态方法来生产对象实例的设计模式
//接单例模式代码
class FactoryClass 
{
    static public function factory() {
        return Single::getInstance();
    }
}
var_dump(FactoryClass::factory());
3、注册器模式指将对象注册到全局树上,可直接设置获取注销对象
class Register 
{
    static protected $objects; //全局树array
    static public function set($alias, $object) 
    {
        self::$objects[$alias] = $object; //设置
    }
    static public function get($alias) 
    {
        return self::$objects[$alias]; //获取
    }
    static public function _unset($alias) 
    {
        unset(self::$objects[$alias]); //注销
    }
}
Register::set('rand', FactoryClass::factory()); //设置别名为rand的对象
print_r(Register::get('rand')); //获取别名为rand的对象

Register::_unset('rand');   //销毁别名为rand的对象
var_dump(Register::get('rand')); //Notice: Undefined index: rand

打印

[root@bogon test.cc]# php index.php 
Single Object
(
    [rand] => 9
)
NULL
4、适配器模式指将一个类的接口转换成客户期望的另一个类的接口,让原本接口不兼容的类合作无间。

适配器分为类适配器和对象适配器,类适配器采用“多继承”的实现方式,导致不良的高耦合,对象适配器采用“对象组合”的方式,更符合松耦合精神。

4.1 类适配器
            
关注
打赏
1665558895
查看更多评论
0.0453s