package com.lonton.designpatterns;
import java.util.ArrayList;
interface Visitor
{
public void visit(City city);
public void visit(Museum museum);
public void viist(Park park);
}
class FirstTimeVisitor implements Visitor
{
@Override
public void visit(City city)
{
// TODO Auto-generated method stub
System.out.println("I'm visiting the city!");
}
@Override
public void visit(Museum museum)
{
// TODO Auto-generated method stub
System.out.println("I'm visiting the Museum!");
}
@Override
public void viist(Park park)
{
// TODO Auto-generated method stub
System.out.println("I'm visiting the Park!");
}
}
interface Element
{
public void accept(Visitor visitor);
}
class City implements Element
{
private ArrayList<Element> elements = new ArrayList<Element>();
public City()
{
elements.add(new Museum());
elements.add(new Park());
}
@Override
public void accept(Visitor visitor)
{
// TODO Auto-generated method stub
System.out.println("City is accepting visitor");
visitor.visit(this);
for (Element element : elements)
{
element.accept(visitor);
}
}
}
class Museum implements Element
{
@Override
public void accept(Visitor visitor)
{
// TODO Auto-generated method stub
System.out.println("Museum is accepting visitor");
visitor.visit(this);
}
}
class Park implements Element
{
@Override
public void accept(Visitor visitor)
{
// TODO Auto-generated method stub
System.out.println("Park is accepting visitor");
visitor.viist(this);
}
}
public class VisitorTest
{
public static void main(String[] args)
{
FirstTimeVisitor visitor = new FirstTimeVisitor();
City city = new City();
city.accept(visitor);
}
}
Visitor 访问者模式
最新推荐文章于 2019-02-22 15:58:37 发布