PHP 设计模式十五 观察者模式

278 阅读2分钟

「这是我参与11月更文挑战的第23天,活动详情查看:2021最后一次更文挑战

课程背景

  • 最近完成一个项目 对于代码分层有了一丢丢了解 但是架构设计合理性上存在问题
  • 万物看本质基本功硬 底层知识扎实才能写出更优质的代码 才能走得更远
  • 作为努力奔跑的程序员 又一次的去温习 思考 设计模式等基础的php知识
  • 因为掘金粑粑有奖励,所以把学习的笔记整理记录并分享了出来。

正文开始

我们在一个方法中完成业务,当后期要添加新功能时候,我们只能在这里继续往下写新逻辑代码。举个栗子一个设备平台,当用户上传完成设备以后,我们就返回成功就可以。但后期客户要求加入站内信通知,后期又要加短信通知,后期又要加入奖励等等。这就导致我们这个方法会很长。

传统的代码写法

<?php

use Event as GlobalEvent;

/**
 * [观察者模式] 
 * Author Liiy. 
 * Date 2021/11/28. 
 * Time 13:21. 
 */

class Equipment{
    function save(){
        echo '保存设备<br>';

        echo "新逻辑1<br>";

        echo "新逻辑2<br>";

        echo "新逻辑3<br>";
    }
}

$equip = new Equipment();
$equip->save();

观察者思路

我们把每一个小的操作块提取成一个类,然后类中使用同一个方法假设A。这样我们把所有的要执行的类放在一个数组中,循环数组依次执行方法A即可。只是,要约束每一个类的方法名就需要使用接口了。

1 先定义接口,规定一个所有类都有的方法。并在实现当前类的子类方法中去写具体的逻辑。

<?php
namespace Observer;

interface EquipSaveI{
    
    /** 
     * 每一个观察者都应该有的方法
    */
    public function execute();
}

这样每一个观察者都能拥有一个相同的执行逻辑的方法。

下一章节继续