本文参看php 设计模式 之 访问者模式.

visitVip($this);

}

}

class NormalUser extends User

{

//同上的getPoint()具体实现就由接口中实现了

//同VipUser类中的accept

public function accept(UserVisitor $vitor)

{

$vitor->visitNormal($this);

}

}

//定义访问者接口

abstract class UserVisitor

{

//访问者必须要实现的访问不同用户的接口方法

abstract function visitVip(User $user);

abstract function visitNormal(User $user);

}

//积分操作的访问者实现

class PointActVisitor extends UserVisitor

{

public function visitVip(User $user)

{

echo 'Vip用户+10分 ';

}

public function visitNormal(User $user)

{

echo 'Normal用户+5分';

}

}

//用户的树形结构

class Users

{

protected $users;

public function addUser(User $user)

{

$this->users[] = $user;

}

//让所有的用户都能被访问者访问

public function handleVisitor(UserVisitor $visitor)

{

foreach($this->users as $user)

{

$user->accept($visitor);

}

}

}

$pointVisitor = new PointActVisitor();

$users = new Users();

$users->addUser(new VipUser()); //添加新用户

$users->addUser(new NormalUser());

$users->addUser(new NormalUser());

$users->handleVisitor($pointVisitor);

以上就介绍了18php访问者模式,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

访问者模式 php,18php访问者模式相关推荐

  1. Java设计模式(访问者模式-迭代器模式-观察者模式-中介者模式)

    Java设计模式Ⅶ 1.访问者模式 1.1 访问者模式概述 1.2 代码理解 2.迭代器模式 2.1 迭代器模式概述 2.2 代码理解 3.观察者模式 3.1 观察者模式概述 3.2 代码理解 4.中 ...

  2. Visitor(访问者)--对象行为型模式

    Visitor(访问者)–对象行为型模式 一.意图 表示一个作用于某个对象结构中的各元素的操作.它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作. 二.动机 1.在软件构建过程中,由于需 ...

  3. 图解Java设计模式学习笔记——行为型模式(模版方法模式、命令模式、访问者模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式)

    一.模板方法模式(模板模式)--钩子方法 1.需求-豆浆制作问题 编写制作豆浆的程序,说明如下: 制作豆浆的流程选材-->添加配料-->浸泡-->放到豆浆机打碎. 通过添加不同的配料 ...

  4. 23种设计模式的JAVA实现——访问者模式(行为型模式)

    访问者模式 访问者模式:在访问者模式(Visitor Pattern)中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.这种类型的设计模式属于 ...

  5. 【design pattern】工厂方法模式和抽象工厂模式

    前言 设计模式分为三大类: 创建型模式:工厂方法模式.抽象工厂模式.单例模式.建造者模式.原型模式: 结构型模式:适配器模式.装饰器模式.代理模式.外观模式.桥接模式.组合模式.享元模式: 行为型模式 ...

  6. 创建型模式、结构型模式和行为型模式_设计模式之创建型模式

    设计模式GOF23(Group of Four) 设计模式可分为三种类型: 创建型模式:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式. 结构型模式:适配器模式,桥接模式,装饰模式,组合模式, ...

  7. 访客模式 无痕模式 区别_模式:访客模式

    访客模式 无痕模式 区别 问候, 这周我们放开所有代数的内容,然后集中精力 面向对象编程的全部内容. Java声称支持OO,因此 为什么不使用它? 在本周的文章中,我们将讨论一下何时 以及为什么要应用 ...

  8. 面试官问:代理模式和装饰者模式有啥区别

    今天面试聊到了模式. 面试官问:装饰者模式了解吗,讲一下? 我:blabla... 面试官:那代理模式呢? 我:blabla.....(说完感觉怎么都一样呢) 果然,面试官又问了:那两者有什么区别呢? ...

  9. 【设计模式系列19】状态模式原理分析及其和策略模式,责任链模式的区别

    状态模式原理分析 设计模式系列总览 前言 什么是状态模式 状态模式示例 状态模式角色 状态模式与责任链模式 状态模式与策略模式 状态模式应用场景 状态模式优缺点 总结 设计模式系列总览 设计模式 飞机 ...

最新文章

  1. 【 MATLAB 】Filter Data
  2. 类成员初始化顺序php,PHP-php类成员变量初始化的问题?
  3. 配置阿里巴巴的数据源
  4. 通过这组数据分析发现房价波动背后的规律
  5. java barcode api_使用JavaBean API 嵌入Barcode4J到Java应用程序
  6. Tableau研学小课堂(part2)--Tableau数据源界面
  7. 代换-置换网络(SP网络)
  8. java 追加写入txt文件_ava如何追加写入txt文件
  9. 约瑟夫环问题---循环单链表
  10. laravel 数据库操作(表、字段)
  11. 开源项目贡献者_扩大项目贡献者基础的5种方法
  12. 嵌套的SQL另外一种写法
  13. Layui中文离线版文档
  14. ubuntu下人体姿态识别OpenPose编译运行
  15. 4000汉字无一重字
  16. 安卓获取浏览器上网记录_Android 获取自带浏览器上网记录
  17. 环境样品中病毒的富集与检测方法
  18. 计算机常年开机,电脑长时间开机的危害
  19. 2022年下半年软考报名时间陆续公布(持续更新)
  20. html5新年网页做给父母的,给父母的感谢信5篇模板

热门文章

  1. Android init.rc文件解析过程详解(三)
  2. 【任务脚本】京jd东jd炸年兽活动任务全自动程序
  3. 【PC工具】微软OneNote使用笔记,onenote无法连接网络无法同步解决方法
  4. 【移动通信】天线原理
  5. 数字锁相环的matlab仿真
  6. Android 中文 API (19) —— TwoLineListItem
  7. AnjularJS笔记5--ng-repeat跟据ID判断重复性
  8. 一个快速、高效的Levenshtein算法实现
  9. windows 2008 server R2 版本概览
  10. java中c/s模式传送数据