Pobierz prezentację
Pobieranie prezentacji. Proszę czekać
OpublikowałJulian Małek Został zmieniony 9 lat temu
1
Design Patterns.: Visitor :.
2
Plan prezentacji 1. Trochę statystyk. 2. Zadanie problemowe. 3. Rozwiązanie… Visitor. 4. Visitor w UML (a,b,c). 5. Implementacja (a,b,c,d). 6. Diagram stanów 7. Gdzie gościł „Visitor”?
3
1.Trochę statystyk Singleton Proxy Facade Strategy Command Visitor http://www.dofactory.com/
4
2. Zadanie problemowe Jedna struktura danych stanowi podstawę dla wielu nie związanych ze sobą zadań. Metody których zadań należy uwzględnić w elementach struktury? Przypisanie wielu różnych funkcjonalnie metod do jednej klasy
5
3. Rozwiązanie … Visitor Visitor Reprezentuje operację, którą możemy wykonać na elementach pewnej obiektowej struktury. Pozwala na zdefiniowanie nowej operacji bez konieczności ingerencji w klasy, na których operuje.
6
4.a. Visitor w UML Pierwotna struktura…
7
4.b. Visitor w UML …oraz metody w nowej szacie…
8
4.c. Visitor w UML …stanowią gotowy wzorzec
9
5.a. Implementacja class Node { public: virtual ~Node(); virtual void Accept(class Visitor&)=0; protected: Node(){}; };
10
5.b. Implementacja… class AssignmentNode : public Node { public: AssignmentNode(); virtual void Accept(class Visitor& v) { v.VisitAssignment(this); }; class VariableNode : public Node { public: VariableNode(); virtual void Accept(class Visitor& v) { v.VisitVariableRef(this); } };
11
5.c. Implementacja… class Visitor { public: virtual void VisitAssignment(class AssignmentNode*)=0; virtual void VisitVariableRef(class VariableNode*)=0; protected: Visitor(){}; };
12
5.d. Implementacja! class TypeCheckingVisitor : public Visitor { public: TypeCheckingVisitor(); virtual void VisitAssignment(class AssignmentNode*){/* kod */}; virtual void VisitVariableRef(class VariableNode*){/* kod */}; }; class CodeGeneratingVisitor : public Visitor { public: CodeGeneratingVisitor(); virtual void VisitAssignment(class AssignmentNode*){/* kod */}; virtual void VisitVariableRef(class VariableNode*){/* kod */}; };
14
6. Diagram stanów
15
7. Gdzie „gościł” Visitor? Smalltalk-80 (ProgramNodeEnumerator) IRIS Inventor
16
Na deser… http://www.dofactory.com/Patterns/Patterns.aspx#list http://www.swe.uni-linz.ac.at/research/deco/designPatterns/Visitor/ www.wikipedia.org
17
KONIEC
Podobne prezentacje
© 2024 SlidePlayer.pl Inc.
All rights reserved.