「这是我参与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();
}
这样每一个观察者都能拥有一个相同的执行逻辑的方法。
下一章节继续