php与设计模式-访问者模式

PIPE Interface解析之PIPE SerDes/Original架构 PIPI Interface;SerDes架构;Original架构;PHY Tx结构;PHY Rx结构; 阅读详情

访问者模式

表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。

Demo

<?php 
/**
* Created by PhpStorm.
*/ 

/*男人这本书的内容要比封面吸引人;女人这本书的封面通常比内容更吸引人
男人成功时,背后多半有一个伟大的女人;女人成功时,背后多半有一个失败的男人
男人失败时,闷头喝酒,谁也不用劝;女人失败时,眼泪汪汪,谁也劝不了
男人恋爱时,凡事不懂也要装懂;女人恋爱时,遇事懂也要装作不懂*/ 
//抽象状态 
abstract class State 
{ 
   protected $state_name; 

   //得到男人反应 
   public abstract function GetManAction(VMan $elementM); 
   //得到女人反应 
   public abstract function GetWomanAction(VWoman $elementW); 
} 

//抽象人 
abstract class Person 
{ 
   public $type_name; 

   public abstract function Accept(State $visitor); 
} 

//成功状态 
class Success extends State 
{ 
   public function __construct() 
   { 
       $this->state_name="成功"; 
   } 

   public  function GetManAction(VMan $elementM) 
   { 
       echo "{$elementM->type_name}:{$this->state_name}时,背后多半有一个伟大的女人。<br/>"; 
   } 

   public  function GetWomanAction(VWoman $elementW) 
   { 
       echo "{$elementW->type_name} :{$this->state_name}时,背后大多有一个不成功的男人。<br/>"; 
   } 
} 

//失败状态 
class Failure extends State 
{ 
   public function __construct() 
   { 
       $this->state_name="失败"; 
   } 

   public  function GetManAction(VMan $elementM) 
   { 
       echo "{$elementM->type_name}:{$this->state_name}时,闷头喝酒,谁也不用劝。<br/>"; 
   } 

   public  function GetWomanAction(VWoman $elementW) 
   { 
       echo "{$elementW->type_name} :{$this->state_name}时,眼泪汪汪,谁也劝不了。<br/>"; 
   } 
} 

//恋爱状态 
class Amativeness  extends State 
{ 
   public function __construct() 
   { 
       $this->state_name="恋爱"; 
   } 

   public  function GetManAction(VMan $elementM) 
   { 
       echo "{$elementM->type_name}:{$this->state_name}时,凡事不懂也要装懂。<br/>"; 
   } 

   public  function GetWomanAction(VWoman $elementW) 
   { 
       echo "{$elementW->type_name} :{$this->state_name}时,遇事懂也要装作不懂。<br/>"; 
   } 
} 

//男人 
class VMan extends Person 
{ 
   function __construct() 
   { 
       $this->type_name="男人"; 
   } 

   public  function Accept(State $visitor) 
   { 
       $visitor->GetManAction($this); 
   } 
} 

//女人 
class VWoman extends Person 
{ 
   public function __construct() 
   { 
       $this->type_name="女人"; 
   } 

   public  function Accept(State $visitor) 
   { 
       $visitor->GetWomanAction($this); 
   } 
} 

//对象结构 
class ObjectStruct 
{ 
   private $elements=array(); 
   //增加 
   public function Add(Person $element) 
   { 
       array_push($this->elements,$element); 
   } 
   //移除 
   public function Remove(Person $element) 
   { 
       foreach($this->elements as $k=>$v) 
       { 
           if($v==$element) 
           { 
               unset($this->elements[$k]); 
           } 
       } 
   } 

   //查看显示 
   public function Display(State $visitor) 
   { 
       foreach ($this->elements as $v) 
       { 
           $v->Accept($visitor); 
       } 
   } 
}

$os = new ObjectStruct(); 
$os->Add(new VMan()); 
$os->Add(new VWoman()); 

//成功时反应 
$ss = new Success(); 
$os->Display($ss); 

//失败时反应 
$fs = new Failure(); 
$os->Display($fs); 

//恋爱时反应 
$ats=new Amativeness(); 
$os->Display($ats);

请关注我的订阅号

订阅号.png

瑞芯微RK3588平台YOLOv8Pose模型RKNN部署与C++优化实战:从模型转换到高效推理的全流程指南-附源码 错误码 | 原因 | 解决方案 || -1001 | ONNX算子不支持 | 升级RKNN SDK至最新版 || -2003 | 量化校准数据不足 | 增加校准图片至500张 || -3005 | 输入尺寸不匹配 | 固定模型输入尺寸为640x640 || 资源消耗 | CPU 35% | NPU 90% | 阅读详情

相关推荐

【RF】Receiver Function接收函数:从理论到实践的深度解析

本文深入解析地震学中的接收函数(Receiver Function, RF)技术,从理论原理到实践操作。文章将RF比作地球的“听诊器”,详细阐述了其通过反褶积剥离震源影响、揭示地下结构(如莫霍面)的核心机制,并提供了使用Python和rf库进行数据处理、计算、动校正与叠加的完整实战流程,同时探讨了其应用、局限性与常见问题的解决方案。

Jerry的专栏 121

访问者模式 php,PHP设计模式(二十)—访问者模式(Visitor Pattern)

访问者模式(Visitor Pattern) : 表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。(一)为什么需要访问者模式访问者模式能够在不更改对象的情况下向该对象添加新的功能性(二)访问者模式 UML图访问者模式UML图通常是比较复杂,如果对于只有一个元素和一种访问者,我们其实也可以不用抽象元素和抽象访问者,不要objectStruct。...

weixin_35652131的博客 128

莫比乌斯反演

本文从算法竞赛和数论角度出发,系统介绍了狄利克雷卷积与莫比乌斯反演的核心概念。首先定义了数论函数及其基本性质,重点阐述了狄利克雷卷积的代数结构(交换环)和关键恒等式(如μ*1=ε)。随后通过卷积视角简化了莫比乌斯反演的证明过程。最后将理论提升至抽象代数层面,揭示这些数论工具本质上是偏序集关联代数在整除关系下的特例,其中莫比乌斯函数对应Zeta函数的逆元。全文展现了数学概念从具体到抽象的升华过程,为理解这些工具提供了更深刻的代数视角。

aichitang2024的博客 391

PHP设计模式之访问者模式

PHP设计模式之访问者模式访问者,就像我们去别人家访问,或者别人来我们家看望我们一样。我们每个人都像是一个实体,而来访的人都会一一的和我们打招呼。毕竟,我们中华民族是非常讲究礼数和好客的...

硬核项目经理 142

windows中如何将已安装的nodejs高版本降级为低版本

第一步:先清空本地安装的node.js版本 1.按健win+R弹出窗口,键盘输入cmd,然后敲回车(或者鼠标直接点击电脑左面最左下角的win窗口图标弹出,输入cmd再点击回车键) 然后进入命令控制行窗口,并输入where node查看之前本地安装的node的路径 2.找到上面找到的路径,将node.exe所在的父目录里面的所有东西都删除 3.为了彻底删除之前安装的node.js,鼠标点击电脑左面最左下角的win窗口图标弹出,输入“控制面板”再点击回车键进入,进入控制面板后,找到所安装的node.js并

weixin_44582077的博客 9万+

安装oracle 19c 报错INS-06006 INS-44000 INS-32070

数据库版本oracle 19c 操作系统版本:centos7.8 安装oracle19c RAC 配置互信的时候setup显示成功,点test的时候报错INS-44000,继续点yes 报错INS-32070,继续往下点 报错INS-06006 处理过程 1.手动ssh node date 全部成功说明互信时没有问题的 2.查mos 文档ID 2555697.1 如果OpenSSH升级到8.x会有这个问题 MOS上的解决办法 #ssh -V OpenSSH_8.0p1, OpenSSL 1.0.2r 2

cqszpx的博客 1527

访问者模式 php,学习php设计模式 php实现访问者模式(Visitor)

访问者模式表示一个作用于某对象结构中各元素的操作。它可以在不修改各元素类的前提下定义作用于这些元素的新操作,即动态的增加具体访问者角色。访问者模式利用了双重分派。先将访问者传入元素对象的Accept方法中,然后元素对象再将自己传入访问者,之后访问者执行元素的相应方法。访问者模式多用在聚集类型多样的情况下。在普通的形式下必须判断每个元素是属于什么类型然后进行相应的操作,从而诞生出冗长的条件转移语句。...

weixin_42813171的博客 191

STM32F103C8T6+TB6612驱动直流电机全攻略(附PWM调速代码)

本文提供了一份基于STM32F103C8T6微控制器和TB6612驱动模块的直流电机驱动完整解决方案。详细解析了硬件连接、STM32CubeMX配置、HAL库驱动代码编写,并附带了PWM调速代码实现。内容涵盖从基础原理到实战调试的全过程,旨在帮助开发者快速构建稳定、可精准调速的电机控制系统,适用于智能车、机器人等嵌入式项目。

weixin_29181861的博客 585

PHP设计模式——访问者模式

声明:本系列博客参考资料《大话设计模式》,作者程杰。       访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。       UML类图:                   角色:                 1.抽象访问者(State):为该对象结构中具体元素角色声明一个访问

姜海强 4034

kubedns-coredns部署pod出现not ready问题

文章目录遇到的问题1、发现问题2、排查问题3、解决方法 coredns的实例health_check不通过的问题,排查和解决方法 遇到的问题 1、发现问题 pod启动但是未ready 查看是readiness失败 使用对应的URL进行curl,发现真的返回503 2、排查问题 查看错误日志,发现一堆这个错误"waiting on : kubernetes" 网上相关的问题解答 这个跟测试场景不一样,这个案例是开了防火墙,可以确认我这个案例的机器没有开防火墙,但它提醒了一点,coredns是需要访问ap

u012533481的博客 2844

第14.11章 高翔博士最新开源框架Lightning-LM源码解读(十一):离线定位模块全解析,从激光匹配到位姿图优化的极致优化

本文介绍了Lightning-LM离线定位模块的技术架构与实现细节。该模块基于3D激光雷达与IMU融合,采用改进版NDT匹配算法实现高精度定位,具备动态图层更新、多源信息融合等特性。核心流程包括数据预处理、激光里程计处理、IMU预测与点云去畸变、位姿图优化等环节,通过轻量级miao库实现高效增量优化。文章详细解析了模块的代码结构、关键函数功能及数据流,为SLAM系统的开发与优化提供了实践参考。

行知SLAM 374

PHP教程:掌握php设计模式之访问者模式

  PHP教程:掌握php设计模式之访问者模式  这篇文章主要帮助大家轻松掌握php设计模式之访问者模式,感兴趣的小伙伴们可以参考一下  访问者模式解决的问题  在我们的代码编写过程当中,经常需要对一些类似的对象添加一些的代码,我们以一个计算机对象打印组成部分为例来看下:  /**  * 抽象基类  */  abstract class Unit  {  /**  *获取名称...

weixin_34144450的博客 115

Hermes 教程 03:Skills 系统

摘要:Hermes Skills是一种自我改进机制,可将解决问题的经验保存为可复用技能文档。v0.13.0版本遵循agentskills.io开放标准,与Claude Skills互通。技能创建流程包括发现问题、创建技能文件、加载使用和优化更新四个阶段。系统提供技能检索和自维护机制(Curator),支持技能媒体路由和多种管理命令。内置技能涵盖开发调试、创意头脑风暴等场景,通过积累技能使Hermes更适应用户需求。

程序猿_三产 726

2018-1-8-PHP设计模式【访问者模式】

layout title date author desc in_head post PHP设计模式之访问者模式 2018-01-08 09:30:02 +0800 南丞 设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码...

PFinal社区 120

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

设计模式-行为型设计模式-9.访问者模式(php)

Design Pattern For PHP 设计模式类型 行为型设计模式 设计模式名称 访问者模式 模式定义 访问者模式(Visitor Pattern)属于行为模式之一,它将相对稳定的数据或元素与他们的操作分离解耦,使得可以在不改变各元素类的前提下定义作用与这些元素的新操作。 访问者模式主要解决稳定的数据结构和易变的操作耦合问题,把数据结构和作用与数据结构上的操作解耦,使得操作集合可以相对自由的演化。 UML 1、Visitor抽象访问者接口角色: 它定义了对每一个元素(Element)访问的行为,他的

u014354882的博客 181

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

php设计模式之访问者模式

访问者模式表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。 UML类图: 角色: 1.抽象访问者(State):为该对象结构中具体元素角色声明一个访问操作接口。该操作接口的名字和参数标识了发送访问请求给具体访问者的具体元素角色,这...

yonggeit的博客 3826

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

访问者模式 php,访问者模式_设计模式_设计模式之访问者模式 - Lane Blog

访问者模式,是设计模式中最难的一种模式。访问者模式适用于数据结构相对稳定的系统。访问者模式对数据结构和作用于结构上的操作之间进行了一次解耦合。访问者模式的目的是把处理从数据结构分离出来。访问者模式的适用场景:所开发的系统具有比较问题的数据结构,又有抑郁变化的算法。因为访问者模式使得算法操作的增加和扩展变得容易。优点是增加新的操作更加容易,因为增加新操作就是意味着增加新的访问者,访问者模式将有关的行...

weixin_33389398的博客 151

浅谈PHP设计模式的访问者模式

浅谈PHP设计模式的访问者模式

weixin_42100387的博客 173

php 访问者模式,php设计模式之访问者模式

abstract class Unit{protected $depth = 0;function accept(ArmyVisitor $visitor){$method = "visit" . get_class($this);$visitor->$method($this);}protected function setDepth($depth){$this->depth = $...

weixin_39583521的博客 105

访问者模式 php,PHP设计模式——访问者模式

声明:本系列博客參考资料《大话设计模式》,作者程杰。訪问者模式表示一个作用于某对象结构中的各元素的操作。它使你能够在不改变各元素类的前提下定义作用于这些元素的新操作。UML类图:角色:1.抽象訪问者(State):为该对象结构中详细元素角色声明一个訪问操作接口。该操作接口的名字和參数标识了发送訪问请求给详细訪问者的详细元素角色,这样訪问者就能够通过该元素角色的特定接口直接訪问它。2.详细訪问者(S...

weixin_42297846的博客 203

PHP设计模式之访问者模式(Visitor)代码实例大全(32)

目的 访问者模式可以让你将对象操作外包给其他对象。 这样做的最主要原因就是关注(数据结构和数据操作)分离。但是被访问的类必须定一个契约接受访问者。 (详见例子中 Role::accept方法) 契约可以是一个抽象类也可以就是一个接口。在此情况下,每个访问者必须自行选择调用访问者的哪个方法。 UML图 ★官方PHP高级学习交流社群「点击」管理整理了一些资料,BAT等一线大厂进阶知识体系备好(相关学习资料以及笔面试题)以及不限于:分布式架构、高可扩展、高性能、高并发、服务器性能调优、TP6,laravel,.

weixin_43814458的博客 1469

如何快速掌握PHP访问者模式:Visitor设计模式完整指南

在PHP开发中,设计模式是提升代码质量和可维护性的关键。访问者模式(Visitor Pattern)作为一种行为型设计模式,能够在不修改现有类结构的情况下,为对象添加新的操作逻辑。本文将通过GitHub加速计划中的DesignPatternsPHP项目实例,带你系统学习访问者模式的核心概念、实现方法和应用场景,让你快速掌握这一强大的设计模式。 ## 访问者模式核心概念解析 🚀 访问者模式的核

gitblog_00076的博客 1147

访问者模式 php,轻松掌握php设计模式之访问者模式

访问者模式解决的问题在我们的代码编写过程当中,经常需要对一些类似的对象添加一些的代码,我们以一个计算机对象打印组成部分为例来看下:/*** 抽象基类*/abstract class Unit{/***获取名称*/abstract public function getName();}/*** Cpu类*/class Cpu extends Unit{public function getName(...

weixin_31282459的博客 191

访问者模式 php,php设计模式 Visitor 访问者模式

/*** 访问者模式** 表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作**/abstract class Visitor{abstract public function visitCroncreteElementA($element);abstract public function visitCroncreteElementB($eleme...

weixin_39530557的博客 94
上一篇: php与设计模式-职责链模式
下一篇: php与设计模式-中介者模式
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值