ПАТТЕРН ПОСЕТИТЕЛЬ PYTHON

Паттерн "посетитель" является одним из шаблонов проектирования в объектно-ориентированном программировании. Этот паттерн позволяет добавлять новые операции к объектам без изменения их класса.

В Python паттерн "посетитель" может быть использован, к примеру, для обработки структур данных, таких как деревья, графы или массивы. Рассмотрим пример реализации паттерна "посетитель" для дерева:

class TreeNode: def __init__(self, val, left=None, right=None): self.val = val self.left = left self.right = right def accept(self, visitor): visitor.visit(self) if self.left: self.left.accept(visitor) if self.right: self.right.accept(visitor)class TreeVisitor: def visit(self, node): passclass PrintVisitor(TreeVisitor): def visit(self, node): print(node.val)root = TreeNode(1, TreeNode(2), TreeNode(3, TreeNode(4), TreeNode(5)))visitor = PrintVisitor()root.accept(visitor)

В данном примере мы создали класс TreeNode, который представляет узел в дереве. Также мы создали класс TreeVisitor, от которого будут наследоваться все посетители. В данном случае мы создали класс PrintVisitor, который реализует операцию, печатающую значение узла. Для вызова операции мы создали метод accept, который вызывает метод visit у посетителя и передает ему ссылку на текущий узел. Затем вызывает метод accept для левого и правого потомков, если они существуют.

Как видно из примера, паттерн "посетитель" может значительно упростить обработку сложных структур данных. Он позволяет вынести общую логику работы с объектами в отдельный класс, не затрагивая основной класс, что упрощает поддержку и расширение кода.

Python AST Parsing and Custom Linting

Visitor Design Pattern

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

Observer Pattern Tutorial: I NEVER knew events were THIS powerful 🚀

Function Calling via ChatGPT API - First Look With LangChain

Singleton Design Pattern - Python Example

Protocols in Python: Why You Need Them - presented by Rogier van der Geer

BLGPG-82BB40D90405-24-11-24-01

Новые материалы: