ПАТТЕРН VISITOR PHP

Паттерн Visitor PHP - это поведенческий паттерн проектирования, который позволяет добавлять новые операции к существующей структуре объектов, не изменяя эти объекты. Вместо этого операции определены в отдельном классе Visitor. Этот паттерн основан на идее двойной диспетчеризации.

Двойная диспетчеризация - это техника, при которой выбор того, какая функция будет вызываться, основан на двух типах объектов: получателе сообщения (объекте, которому сообщение отправлено) и типе аргумента. При использовании паттерна Visitor, двойная диспетчеризация используется для выбора правильного метода Visit.

Для использования паттерна Visitor в PHP необходимо создать абстрактные классы Element и Visitor. Класс Element должен содержать абстрактный метод Accept, который должен принимать в качестве аргумента объект типа Visitor. Класс Visitor должен содержать методы Visit для каждого типа Element. Когда элемент принимает посетителя, он вызывает его метод Visit себя в качестве аргумента.

abstract class Element { abstract public function accept(Visitor $visitor);}class ConcreteElementA extends Element { public function accept(Visitor $visitor) { $visitor->visitConcreteElementA($this); }}class ConcreteElementB extends Element { public function accept(Visitor $visitor) { $visitor->visitConcreteElementB($this); }}abstract class Visitor { abstract public function visitConcreteElementA(ConcreteElementA $elementA); abstract public function visitConcreteElementB(ConcreteElementB $elementB);}class ConcreteVisitor1 extends Visitor { public function visitConcreteElementA(ConcreteElementA $elementA) { // код обработки элемента A с помощью Visitor1 } public function visitConcreteElementB(ConcreteElementB $elementB) { // код обработки элемента B с помощью Visitor1 }}class ConcreteVisitor2 extends Visitor { public function visitConcreteElementA(ConcreteElementA $elementA) { // код обработки элемента A с помощью Visitor2 } public function visitConcreteElementB(ConcreteElementB $elementB) { // код обработки элемента B с помощью Visitor2 }}$elementA = new ConcreteElementA();$elementB = new ConcreteElementB();$visitor1 = new ConcreteVisitor1();$visitor2 = new ConcreteVisitor2();$elementA->accept($visitor1); // вызов метода visitConcreteElementA из объекта visitor1$elementA->accept($visitor2); // вызов метода visitConcreteElementA из объекта visitor2$elementB->accept($visitor1); // вызов метода visitConcreteElementB из объекта visitor1$elementB->accept($visitor2); // вызов метода visitConcreteElementB из объекта visitor2

Complete Visitor Pass Management System Software using PHP/MySQLi - Free Source Code Download

Javascript Design Patterns #8 - Visitor Pattern

Шаблоны проектирования: Посетитель. Visitor.

how to register and upload data in JANBHAGDARI site - Jvk kits distribution photos - JANBHAGDARI

Singleton Pattern in PHP - What is the Singleton Pattern? - Why is it Required?

Practical design patterns in PHP (Part 3), by Hugo Hamon - Web Summer Camp 2018

VISITOR MANAGEMENT SYSTEM IN PHP - Source Code \u0026 Projects

JavaScript Паттерны #19 - Visitor (Посетитель)

Реклама
Новое
Реклама