Visitor パターンAdvertisement複数のオブジェクトを訪問する
Visitor(訪問者)は複数のオブジェクトを順番に訪問し、定められた処理を順に実行する。
サンプルコード
インタフェース Acceptor
// 受け入れ側
public interface Acceptor {
public void accept(Visitor visitor);
}
クラス Figure
public abstract class Figure implements Acceptor{
public abstract String getName();
public void accept(Visitor visitor){
visitor.visit(this);
}
}
クラス Square
public class Square extends Figure{
private String name = null;
public Square(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
クラス Triangle
public class Triangle extends Figure{
private String name = null;
public Triangle(String name){
this.name = name;
}
public String getName(){
return this.name;
}
}
インタフェース Visitor
// 訪問者
public interface Visitor {
public void visit(Figure figure);
}
public class ConsoleVisitor implements Visitor{
public void visit(Figure figure){
System.out.println(figure.getName());
}
}
クラス Main
import java.util.Vector;
public class Main {
public static void main(String[] args){
Vector figureBox = new Vector();
figureBox.add(new Square("square-1"));
figureBox.add(new Square("square-2"));
figureBox.add(new Square("triangle-1"));
Visitor visitor = new ConsoleVisitor();
for(int i = 0; i < figureBox.size(); i++){
Figure figure = (Figure)figureBox.elementAt(i);
figure.accept(visitor);
}
}
}
Advertisement |
ショートカット・634トップページ・このカテゴリのトップページに戻る ・634ラボ サイト検索Y!ログール |