Visitor pattern (original) (raw)

About DBpedia

Návrhový vzor Visitor umožňuje rozšiřovat možnosti objektu bez nutnosti modifikace jeho třídy. Snaží se o podobný cíl jako aspektově orientované programování. Visitor patří mezi návrhové vzory, které ovlivňují chování tříd a jejich instancí, tzv. behavioral patterns.

thumbnail

Property Value
dbo:abstract Návrhový vzor Visitor umožňuje rozšiřovat možnosti objektu bez nutnosti modifikace jeho třídy. Snaží se o podobný cíl jako aspektově orientované programování. Visitor patří mezi návrhové vzory, které ovlivňují chování tříd a jejich instancí, tzv. behavioral patterns. (cs) Der Besucher (englisch visitor oder visitor pattern) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung, das zur Kategorie der Verhaltensmuster (engl. behavioral patterns) gehört. Das Muster ist eines der sogenannten GoF-Entwurfsmuster. Es dient der Kapselung von Operationen. Die Operationen können auf Elemente einer Objektstruktur ausgeführt werden. Durch die Kapselung ist es möglich, dass neue Operationen ohne Veränderung der betroffenen Elementklassen definiert werden. Mit Hilfe des Besuchers werden einfache Multimethoden (double dispatch) in einer OOP-Sprache implementiert, die von Haus aus nur single dispatch unterstützt. (de) En programación orientada a objetos, el patrón visitor es una forma de separar el algoritmo de la estructura de un objeto. La idea básica es que se tiene un conjunto de clases elemento que conforman la estructura de un objeto. Cada una de estas clases elemento tiene un método aceptar (accept) que recibe al objeto visitante (visitor) como argumento. El visitante es una interfaz que tiene un método visit diferente para cada clase elemento; por tanto habrá implementaciones de la interfaz visitor de la forma: visitorClase1, visitorClase2... visitorClaseN. El método accept de una clase elemento llama al método visit de su clase. Clases concretas de un visitante pueden entonces ser escritas para hacer una operación en particular. Cada método visit de un visitante concreto puede ser pensado como un método que no es de una sola clase, sino de un par de clases: el visitante concreto y clase elemento particular. Así el patrón visitor simula el envío doble (en inglés este término se conoce como Double-Dispatch) en un lenguaje convencional orientado a objetos de envío único (Single-Dispatch), como son Java o C++. El patrón visitor también especifica cómo sucede la interacción en la estructura del objeto. En su versión más sencilla, donde cada algoritmo necesita iterar de la misma forma, el método accept de un elemento contenedor, además de una llamada al método visit del objeto visitor, también pasa el objeto visitor como argumento al llamar al método accept de todos sus elementos hijos. Este patrón es ampliamente utilizado en intérpretes, compiladores y procesadores de lenguajes, en general. (es) En programmation orientée objet et en génie logiciel, le patron de conception comportemental visiteur est une manière de séparer un algorithme d'une structure de données. (fr) 객체 지향 프로그래밍과 소프트웨어 공학에서 비지터 패턴(visitor pattern; 방문자 패턴)은 알고리즘을 객체 구조에서 분리시키는 디자인 패턴이다. 이렇게 분리를 하면 구조를 수정하지 않고도 실질적으로 새로운 동작을 기존의 객체 구조에 추가할 수 있게 된다. 개방-폐쇄 원칙을 적용하는 방법의 하나이다. (ko) Visitor パターンは、オブジェクト指向プログラミング およびソフトウェア工学 において、 アルゴリズムをオブジェクトの構造から分離するためのデザインパターンである。分離による実用的な結果として、既存のオブジェクトに対する新たな操作を構造を変更せずに追加することができる。 基本的には Visitor パターンは一群のクラスに対して新たな仮想関数をクラス自体を変更せずに追加できるようにする。そのために、全ての仮想関数を適切に特化させた Visitor クラスを作成する。Visitor はインスタンスへの参照を入力として受け取り、ダブルディスパッチを用いて目的を達する。 Visitor は強力であるが、既存の仮想関数と比較して制限もある。各クラス内に小さなコールバックメソッドを追加する必要があり、各クラスのコールバックメソッドは新たなサブクラスで継承することができない。 (ja) In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure on which it operates. A practical result of this separation is the ability to add new operations to existing object structures without modifying the structures. It is one way to follow the open/closed principle. In essence, the visitor allows adding new virtual functions to a family of classes, without modifying the classes. Instead, a visitor class is created that implements all of the appropriate specializations of the virtual function. The visitor takes the instance reference as input, and implements the goal through double dispatch. (en) Il Visitor è un design pattern comportamentale utilizzato in informatica nella programmazione orientata agli oggetti. Permette di separare un algoritmo dalla struttura di oggetti composti a cui è applicato, in modo da poter aggiungere nuove operazioni e comportamenti senza dover modificare la struttura stessa. (it) Odwiedzający (wizytator) – wzorzec projektowy, którego zadaniem jest odseparowanie algorytmu od struktury obiektowej na której operuje. Praktycznym rezultatem tego odseparowania jest możliwość dodawania nowych operacji do aktualnych struktur obiektów bez konieczności ich modyfikacji. (pl) Посетитель (англ. visitor) — поведенческий шаблон проектирования, описывающий операцию, которая выполняется над объектами других классов. При изменении visitor нет необходимости изменять обслуживаемые классы. Шаблон демонстрирует классический приём восстановления информации о потерянных типах, не прибегая к понижающему приведению типов при помощи двойной диспетчеризации. (ru) Em programação orientada a objetos e engenharia de software, o visitor pattern é umpadrão de projeto comportamental. Representa uma operação a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie uma nova operação sem que se mude a classe dos elementos sobre as quais ela opera. É uma maneira de separar um algoritmo da estrutura de um objeto. Um resultado prático é a habilidade de adicionar novas funcionalidades a estruturas de um objeto pré-existente sem a necessidade de modificá-las. A ideia é usar uma classe de elementos como uma estrutura, sendo que cada uma delas possui um método cujo um dos argumentos é um objeto do tipo visitor. Visitor é uma interface que possui um método visit para cada classe de elementos. O método accept de uma classe de elementos invoca o método visit de sua respectiva classe. Classes visitor concretas distintas podem então ser escritas para implementar operações especiais. O padrão Visitor é uma solução para separar o algoritmo da estrutura. Uma das vantagens desse padrão é a habilidade de adicionar novas operações a uma estrutura já existente. Com ele, podemos ter a classe ObjetoSolido e o comportamento de queda em uma classe Gravidade, separada da estrutura do ObjetoSolido. Isso é feito através de uma interface, onde o objeto que vai executar esse método da classe do comportamento, passa uma referencia dela mesmo junto dos parâmetros normais da classe.No caso desse exemplo, teríamos: Visitor gravidade = new Gravidade; //esse é o nosso visitor, responsável pelo comportamento de queda.Solido solido = new Solido("caixa"); //solido que recebera o comportamentosolido.accept(gravidade); //recebe o comportamento Gravidade Internamente, o método accept(Visitor visitor) de Solido faz o seguinte: public void accept(Visitor visitor) {visitor.visitSolido(this);} Ao passar para o Visitor uma referencia de si mesmo, o visitor pode acessar os métodos e atributos públicos dessa classe, que no nosso caso, vai adicionar a aceleração da gravidade ao Solido. Assim como o comportamento de queda foi adicionado, outros também poderiam ser feitos da mesma maneira, como movimentação através do teclado, sons... as possibilidades são infinitas. (pt) Inom framför allt objektorienterad programmering möjliggör designmönstret besökare (Visitor pattern på engelska) en tydlig separation mellan en typstruktur och en beräkning på strukturen. Genom denna separation blir det lättare att lägga till nya operationer till befintliga strukturer utan att modifiera de ingående typerna. Det är med andra ord ett sätt att följa . (sv) 访问者模式是一种将算法与对象结构分离的软件设计模式。 这个模式的基本想法如下:首先我们拥有一个由许多对象构成的对象结构,这些对象的都拥有一个accept方法用来接受访问者对象;访问者是一个接口,它拥有一个visit方法,这个方法对访问到的对象结构中不同类型的元素作出不同的反应;在对象结构的一次访问过程中,我们遍历整个对象结构,对每一个元素都实施accept方法,在每一个元素的accept方法中回调访问者的visit方法,从而使访问者得以处理对象结构的每一个元素。我们可以针对对象结构设计不同的实在的访问者类来完成不同的操作。 访问者模式使得我们可以在传统的单分派语言(如Smalltalk、Java和C++)中模拟技术。对于支持多分派的语言(如CLOS),访问者模式已经内置于语言特性之中了,从而不再重要。 (zh) Відвідувач (Visitor) — шаблон проєктування, який дозволяє відділити певний алгоритм від елементів, на яких алгоритм має бути виконаний, таким чином можливо легко додати або ж змінити алгоритм без зміни елементів системи. Практичним результатом є можливість додавання нових операцій в існуючі структури об'єкта без зміни цих структур. Відвідувач дозволяє додавати нові віртуальні функції в родинні класи без зміни самих класів, натомість, один відвідувач створює клас, який реалізує всі відповідні спеціалізації віртуальної функції. Відвідувач приймає посилання на елемент й реалізується шляхом подвійної диспетчеризації. (uk)
dbo:thumbnail wiki-commons:Special:FilePath/W3sDesign_Visitor_Design_Pattern_UML.jpg?width=300
dbo:wikiPageExternalLink http://lepus.org.uk/ref/legend/legend.xml http://www.lepus.org.uk/ref/companion/Visitor.xml https://drive.google.com/file/d/0BwhCYaYDn8EgNWIwZDg2YjUtNDRhNi00NzQ2LWFmNmMtYmYxNGI5ZjEwZDZj/view https://web.archive.org/web/20151022084246/http:/objectmentor.com/resources/articles/visitor.pdf http://www.cs.bham.ac.uk/~hxt/research/mfps-visitors.pdf http://se.ethz.ch/~meyer/publications/computer/visitor.pdf http://perfectjpattern.sourceforge.net/dp-visitor.html http://sourcemaking.com/design_patterns/visitor http://web.cs.ucla.edu/~palsberg/paper/compsac98.pdf http://www.polyglotinc.com/reflection.html http://www.oodesign.com/oo_design_patterns/behavioral_patterns/visitor_pattern.html https://www.webcitation.org/66gH7HEVV%3Furl=http:/objectmentor.com/resources/articles/visitor.pdf
dbo:wikiPageID 38689 (xsd:integer)
dbo:wikiPageLength 34499 (xsd:nonNegativeInteger)
dbo:wikiPageRevisionID 1095877181 (xsd:integer)
dbo:wikiPageWikiLink dbr:Python_(programming_language) dbr:Bertrand_Meyer dbr:Algorithm dbr:Design_Patterns dbr:Double_dispatch dbr:Common_Lisp dbr:Object-oriented_programming dbr:Object_(computer_science) dbr:Open/closed_principle dbr:Robert_Cecil_Martin dbr:Class_(computer_programming) dbr:Container_(abstract_data_type) dbr:Single_responsibility_principle dbr:Smalltalk dbr:Composite_pattern dbr:Computer-aided_design dbr:Function_object dbr:Software_engineering dbr:C++ dbr:C_Sharp_(programming_language) dbr:File:Visitor_design_pattern.svg dbr:Algebraic_data_type dbr:Dynamic_Language_Runtime dbr:Church_encoding dbr:Iteration dbr:Iterator_pattern dbr:Unified_Modeling_Language dbr:JavaScript dbr:Java_(programming_language) dbc:Articles_with_example_C++_code dbc:Articles_with_example_Java_code dbc:Articles_with_example_Python_(programming_language)_code dbc:Software_design_patterns dbc:Articles_with_example_Lisp_(programming_language)_code dbr:Swift_(programming_language) dbr:Code_reuse dbr:Software_design_pattern dbr:Class_diagram dbr:Objective-C dbr:Pattern_matching dbr:Sequence_diagram dbr:Virtual_function dbr:Programming_language dbr:IEEE_Computer_Society dbr:Multiple_dispatch dbr:Tagged_union dbr:Single_dispatch dbr:Loop_(programming) dbr:C._Barry_Jay dbr:File:UML_diagram_of_an_example_of_the_Visitor_design_pattern.png dbr:File:Visitor_pattern_class_diagram_in_LePUS3.gif dbr:File:W3sDesign_Visitor_Design_Pattern_UML.jpg dbr:Jens_Palsberg
dbp:date 2002-03-05 (xsd:date) 2004-04-12 (xsd:date) 2015-10-22 (xsd:date)
dbp:title The Visitor Family of Design Patterns (en)
dbp:url https://drive.google.com/file/d/0BwhCYaYDn8EgNWIwZDg2YjUtNDRhNi00NzQ2LWFmNmMtYmYxNGI5ZjEwZDZj/view https://web.archive.org/web/20151022084246/http:/objectmentor.com/resources/articles/visitor.pdf https://www.webcitation.org/66gH7HEVV%3Furl=http:/objectmentor.com/resources/articles/visitor.pdf
dbp:wikiPageUsesTemplate dbt:Code dbt:Commons_category dbt:More_citations_needed dbt:Quote dbt:R dbt:Reflist dbt:Rp dbt:See_also dbt:Short_description dbt:Webarchive dbt:Wikibooks dbt:Design_Patterns_Patterns
dct:subject dbc:Articles_with_example_C++_code dbc:Articles_with_example_Java_code dbc:Articles_with_example_Python_(programming_language)_code dbc:Software_design_patterns dbc:Articles_with_example_Lisp_(programming_language)_code
gold:hypernym dbr:Way
rdf:type owl:Thing yago:WikicatSoftwareDesignPatterns yago:Abstraction100002137 yago:Cognition100023271 yago:Form105930736 yago:PsychologicalFeature100023100 yago:Structure105726345
rdfs:comment Návrhový vzor Visitor umožňuje rozšiřovat možnosti objektu bez nutnosti modifikace jeho třídy. Snaží se o podobný cíl jako aspektově orientované programování. Visitor patří mezi návrhové vzory, které ovlivňují chování tříd a jejich instancí, tzv. behavioral patterns. (cs) En programmation orientée objet et en génie logiciel, le patron de conception comportemental visiteur est une manière de séparer un algorithme d'une structure de données. (fr) 객체 지향 프로그래밍과 소프트웨어 공학에서 비지터 패턴(visitor pattern; 방문자 패턴)은 알고리즘을 객체 구조에서 분리시키는 디자인 패턴이다. 이렇게 분리를 하면 구조를 수정하지 않고도 실질적으로 새로운 동작을 기존의 객체 구조에 추가할 수 있게 된다. 개방-폐쇄 원칙을 적용하는 방법의 하나이다. (ko) Visitor パターンは、オブジェクト指向プログラミング およびソフトウェア工学 において、 アルゴリズムをオブジェクトの構造から分離するためのデザインパターンである。分離による実用的な結果として、既存のオブジェクトに対する新たな操作を構造を変更せずに追加することができる。 基本的には Visitor パターンは一群のクラスに対して新たな仮想関数をクラス自体を変更せずに追加できるようにする。そのために、全ての仮想関数を適切に特化させた Visitor クラスを作成する。Visitor はインスタンスへの参照を入力として受け取り、ダブルディスパッチを用いて目的を達する。 Visitor は強力であるが、既存の仮想関数と比較して制限もある。各クラス内に小さなコールバックメソッドを追加する必要があり、各クラスのコールバックメソッドは新たなサブクラスで継承することができない。 (ja) Il Visitor è un design pattern comportamentale utilizzato in informatica nella programmazione orientata agli oggetti. Permette di separare un algoritmo dalla struttura di oggetti composti a cui è applicato, in modo da poter aggiungere nuove operazioni e comportamenti senza dover modificare la struttura stessa. (it) Odwiedzający (wizytator) – wzorzec projektowy, którego zadaniem jest odseparowanie algorytmu od struktury obiektowej na której operuje. Praktycznym rezultatem tego odseparowania jest możliwość dodawania nowych operacji do aktualnych struktur obiektów bez konieczności ich modyfikacji. (pl) Посетитель (англ. visitor) — поведенческий шаблон проектирования, описывающий операцию, которая выполняется над объектами других классов. При изменении visitor нет необходимости изменять обслуживаемые классы. Шаблон демонстрирует классический приём восстановления информации о потерянных типах, не прибегая к понижающему приведению типов при помощи двойной диспетчеризации. (ru) Inom framför allt objektorienterad programmering möjliggör designmönstret besökare (Visitor pattern på engelska) en tydlig separation mellan en typstruktur och en beräkning på strukturen. Genom denna separation blir det lättare att lägga till nya operationer till befintliga strukturer utan att modifiera de ingående typerna. Det är med andra ord ett sätt att följa . (sv) 访问者模式是一种将算法与对象结构分离的软件设计模式。 这个模式的基本想法如下:首先我们拥有一个由许多对象构成的对象结构,这些对象的都拥有一个accept方法用来接受访问者对象;访问者是一个接口,它拥有一个visit方法,这个方法对访问到的对象结构中不同类型的元素作出不同的反应;在对象结构的一次访问过程中,我们遍历整个对象结构,对每一个元素都实施accept方法,在每一个元素的accept方法中回调访问者的visit方法,从而使访问者得以处理对象结构的每一个元素。我们可以针对对象结构设计不同的实在的访问者类来完成不同的操作。 访问者模式使得我们可以在传统的单分派语言(如Smalltalk、Java和C++)中模拟技术。对于支持多分派的语言(如CLOS),访问者模式已经内置于语言特性之中了,从而不再重要。 (zh) Der Besucher (englisch visitor oder visitor pattern) ist ein Entwurfsmuster aus dem Bereich der Softwareentwicklung, das zur Kategorie der Verhaltensmuster (engl. behavioral patterns) gehört. Das Muster ist eines der sogenannten GoF-Entwurfsmuster. Es dient der Kapselung von Operationen. Die Operationen können auf Elemente einer Objektstruktur ausgeführt werden. Durch die Kapselung ist es möglich, dass neue Operationen ohne Veränderung der betroffenen Elementklassen definiert werden. (de) En programación orientada a objetos, el patrón visitor es una forma de separar el algoritmo de la estructura de un objeto. La idea básica es que se tiene un conjunto de clases elemento que conforman la estructura de un objeto. Cada una de estas clases elemento tiene un método aceptar (accept) que recibe al objeto visitante (visitor) como argumento. El visitante es una interfaz que tiene un método visit diferente para cada clase elemento; por tanto habrá implementaciones de la interfaz visitor de la forma: visitorClase1, visitorClase2... visitorClaseN. El método accept de una clase elemento llama al método visit de su clase. Clases concretas de un visitante pueden entonces ser escritas para hacer una operación en particular. (es) In object-oriented programming and software engineering, the visitor design pattern is a way of separating an algorithm from an object structure on which it operates. A practical result of this separation is the ability to add new operations to existing object structures without modifying the structures. It is one way to follow the open/closed principle. (en) Em programação orientada a objetos e engenharia de software, o visitor pattern é umpadrão de projeto comportamental. Representa uma operação a ser realizada sobre elementos da estrutura de um objeto. O Visitor permite que se crie uma nova operação sem que se mude a classe dos elementos sobre as quais ela opera. É uma maneira de separar um algoritmo da estrutura de um objeto. Um resultado prático é a habilidade de adicionar novas funcionalidades a estruturas de um objeto pré-existente sem a necessidade de modificá-las. Internamente, o método accept(Visitor visitor) de Solido faz o seguinte: (pt) Відвідувач (Visitor) — шаблон проєктування, який дозволяє відділити певний алгоритм від елементів, на яких алгоритм має бути виконаний, таким чином можливо легко додати або ж змінити алгоритм без зміни елементів системи. Практичним результатом є можливість додавання нових операцій в існуючі структури об'єкта без зміни цих структур. (uk)
rdfs:label Visitor (návrhový vzor) (cs) Besucher (Entwurfsmuster) (de) Visitor (patrón de diseño) (es) Visiteur (patron de conception) (fr) Visitor (it) Visitor パターン (ja) 비지터 패턴 (ko) Odwiedzający (pl) Visitor Pattern (pt) Посетитель (шаблон проектирования) (ru) Visitor pattern (en) Besökare (sv) Відвідувач (шаблон проєктування) (uk) 访问者模式 (zh)
rdfs:seeAlso dbr:Iterator_pattern
owl:sameAs freebase:Visitor pattern freebase:Visitor pattern yago-res:Visitor pattern wikidata:Visitor pattern dbpedia-bg:Visitor pattern dbpedia-cs:Visitor pattern dbpedia-de:Visitor pattern dbpedia-es:Visitor pattern dbpedia-fa:Visitor pattern dbpedia-fr:Visitor pattern dbpedia-gl:Visitor pattern dbpedia-hu:Visitor pattern dbpedia-it:Visitor pattern dbpedia-ja:Visitor pattern dbpedia-ko:Visitor pattern dbpedia-pl:Visitor pattern dbpedia-pt:Visitor pattern dbpedia-ru:Visitor pattern dbpedia-sv:Visitor pattern dbpedia-uk:Visitor pattern dbpedia-vi:Visitor pattern dbpedia-zh:Visitor pattern https://global.dbpedia.org/id/4z5yu
prov:wasDerivedFrom wikipedia-en:Visitor_pattern?oldid=1095877181&ns=0
foaf:depiction wiki-commons:Special:FilePath/UML_diagram_of_an_example_of_the_Visitor_design_pattern.png wiki-commons:Special:FilePath/Visitor_design_pattern.svg wiki-commons:Special:FilePath/Visitor_pattern_class_diagram_in_LePUS3.gif wiki-commons:Special:FilePath/W3sDesign_Visitor_Design_Pattern_UML.jpg
foaf:isPrimaryTopicOf wikipedia-en:Visitor_pattern
is dbo:wikiPageDisambiguates of dbr:Visitor_(disambiguation)
is dbo:wikiPageRedirects of dbr:Visitor_Pattern dbr:Hierarchical_visitor_pattern dbr:Visitor_(design_pattern) dbr:Visitor_design_pattern dbr:Visitor_technique dbr:Visitors_pattern
is dbo:wikiPageWikiLink of dbr:Behavioral_pattern dbr:Visitor_Pattern dbr:Design_Patterns dbr:Double_dispatch dbr:Intersection_type dbr:Inversion_of_control dbr:Object-oriented_programming dbr:OMeta dbr:Callback_(computer_programming) dbr:Pattern-Oriented_Software_Architecture dbr:Aggregate_pattern dbr:Algebraic_data_type dbr:Iterator dbr:Irony_(framework) dbr:AspectJ dbr:Sweble dbr:Modern_C++_Design dbr:Aspect-oriented_programming dbr:Software_design_pattern dbr:Interface_bloat dbr:ObjectWeb_ASM dbr:Visitor_(disambiguation) dbr:Scene_graph dbr:Multiple_dispatch dbr:Single-serving_visitor_pattern dbr:TreeDL dbr:Hierarchical_visitor_pattern dbr:Visitor_(design_pattern) dbr:Visitor_design_pattern dbr:Visitor_technique dbr:Visitors_pattern
is foaf:primaryTopic of wikipedia-en:Visitor_pattern