1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- @startuml
- /' VISITOR '/
- class Client
- interface Visitor {
- # visitElementA(in a :ConcreteElementA)
- # visitElementB(in b :ConcreteElementB)
- }
- class ConcreteVisitor1 {
- + visitElementA(in a :ConcreteElementA)
- + visitElementB(in b :ConcreteElementB)
- }
- class ConcreteVisitor2 {
- + visitElementA(in a :ConcreteElementA)
- + visitElementB(in b :ConcreteElementB)
- }
- interface Element {
- # accept(in v : Visitor)
- }
- class ConcreteElementA {
- - private_data
- + accept(in v : Visitor)
- + getData()
- }
- class ConcreteElementB {
- - private_data
- + accept(in v : Visitor)
- + getData()
- }
- Visitor <- Client
- Visitor <|-- ConcreteVisitor1
- Visitor <|-- ConcreteVisitor2
- Client --> Element
- Element <|-- ConcreteElementA
- Element <|-- ConcreteElementB
- note as N1
- <b><color:royalBlue>Visitor</color></b>
- <b>Type:</b> Behavioral
- Représente une opération à réaliser
- par item de la structure de l'objet.
- Permet de définir une nouvelle opération
- sans changer de classe d'élément pour
- laquelle elle interagit.
- end note
- @enduml
|