25种php设计模式,你全都知道吗?下面用代码介绍访问者模式(Visitor模式)
<?php /** * 访问者模式 * * 表示一个作用于某对象结构中的各元素的操作,可以在不改变各元素的类的前提下定义作用于这些元素的新操作 * */ abstractclassVisitor { abstractpublicfunction visitCroncreteElementA($element); abstractpublicfunction visitCroncreteElementB($element); } class ConcreteVisitor1 extends Visitor { public function visitCroncreteElementA($element) { echoget_class($element) . " visit 1A<br/>"; } public function visitCroncreteElementB($element) { echoget_class($element) . " visit 1B<br/>"; } } class ConcreteVisitor2 extends Visitor { public function visitCroncreteElementA($element) { echoget_class($element) . " visit 2A<br/>"; } public function visitCroncreteElementB($element) { echoget_class($element) . " visit 2B<br/>"; } } abstractclassElement { abstractpublicfunction accept($visitor); } class ConcreteElementA extends Element { public function accept($visitor) { $visitor->visitCroncreteElementA($this); } } class ConcreteElementB extends Element { public function accept($visitor) { $visitor->visitCroncreteElementB($this); } } class ObjectStructure { private $_elements = array(); public function attach($element) { $this->_elements[] = $element; } public function detach($element) { if ($key = array_search($element, $this->_elements) !== false) unset($this->_elements[$key]); } public function accept($visitor) { foreach ($this->_elements as $element) { $element->accept($visitor); } } } // $objOS = new ObjectStructure(); $objOS->attach(new ConcreteElementA()); $objOS->attach(new ConcreteElementB()); $objCV1 = new ConcreteVisitor1(); $objCV2 = new ConcreteVisitor2(); $objOS->accept($objCV1); $objOS->accept($objCV2);
其他相关设计模式:
备忘录模式(Memento模式)
观察者模式(Observer模式)
模板方法模式(Template Method模式)
命令模式(command模式)
组合模式(composite模式)
享元模式(flyweight模式)
策略模式(strategy模式)
状态模式(state模式)
适配器模式(adapter模式)
工厂模式(factory模式)
原型模式(prototype模式)
外观模式(facade模式)
单例模式(singleton模式)
桥梁模式(bridge模式)
装饰模式(decorator模式)
抽象工厂模式(abstract factory模式)
建造者模式(Builder模式)
访问者模式(Visitor模式)
解释器模式(Interpreter模式)
中介者模式(Mediator模式)
职责链模式(Chain Of Responsibility模式)
代理模式(Proxy模式)
迭代器模式(Interator模式)
数据访问对象模式(DAO模式)
委托模式(Delegation模式)

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

드림위버 CS6
시각적 웹 개발 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

WebStorm Mac 버전
유용한 JavaScript 개발 도구
