【デザインパターン】Visitorパターン

Visitorパターンはデータ部と処理部に階層を分けて処理を定義するパターンです。

package com.example.visitor;

public interface Visitor {
	public void visit(ConcreteElement1 group);
	public void visit(ConcreteElement2 department);
}
package com.example.visitor;

public class ConcreteVisitor implements Visitor {
	public void visit(ConcreteElement1 group) {
	}
	
	public void visit(ConcreteElement2 department) {
	}
}
package com.example.visitor;

public interface Element {
	public void accept(Visitor visitor);
}
package com.example.visitor;

public class ConcreteElement1 implements Element {
	public ConcreteElement1() {
	}
	
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}
}
package com.example.visitor;

public class ConcreteElement2 implements Element{
	public ConcreteElement2() {
	}
	
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}
}
package com.example.visitor;

public class Main {

	public static void main(String[] args) {
		try {
			Element element1 = new ConcreteElement1();
			Element element2 = new ConcreteElement2();
			
			element1.accept(new ConcreteVisitor());
			element2.accept(new ConcreteVisitor());
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

}

Elementがデータ部、Visitorが処理部になっていて、

visitを実行時にElementのクラスによって実行する処理を切り替えています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください