|
|
|
VisitorПозволяет описать операцию, производимую над элементами некоторой структуры, позволяет добавлять новые операции, не изменяя класс структуры.
namespace Visitor_DesignPattern
{
using System;
abstract class Visitor
{
abstract public void VisitElementA(ConcreteElementA a);
abstract public void VisitElementB(ConcreteElementB b);
}
class ConcreteVisitor1 : Visitor
{
override public void VisitElementA(ConcreteElementA a)
{
}
override public void VisitElementB(ConcreteElementB b)
{
}
}
abstract class Element
{
abstract public void Accept(Visitor v);
}
class ConcreteElementA : Element
{
public Visitor myVisitor;
override public void Accept(Visitor v)
{
myVisitor = v;
}
public void OperationA()
{
}
public void DoSomeWork()
{
// . . .
myVisitor.VisitElementA(this);
// . . .
}
}
class ConcreteElementB : Element
{
override public void Accept(Visitor v)
{
}
public void OperationB()
{
}
}
public class Client
{
public static int Main(string[] args)
{
ConcreteElementA eA = new ConcreteElementA();
ConcreteElementB eB = new ConcreteElementB();
ConcreteVisitor1 v1 = new ConcreteVisitor1();
eA.Accept(v1);
eA.DoSomeWork();
return 0;
}
}
}
![]() Back |
| Контакт | Реклама на сайте | Спонсорам | Веб мастерам |
Лицензионное соглашение
- © 2000-2010 dotSITE
Хостинг .NET предоставлен
PARKING.RU
Поддержку сайта осуществляет Murano Software Inc., Offshore software development