디자인 모드 학습의 방문자 모드

1. 명사 해석:
방문자 모드: 객체 구조에 작용하는 요소를 식별하는 작업입니다.그것은 너로 하여금 각 원소를 바꾸지 않는 전제에서 이 원소들의 새로운 조작에 작용하게 할 수 있다.
 
2. 코드 예:
 
 
package DesignPattern.VisitorPattern;

public abstract class Visitor {

	public abstract void VisitConcreateElementA(ConcreateElementA concreateElementA);
	
	public abstract void VisitConcreateElementB(ConcreateElementB concreateElementB); 
}

 
 A
package DesignPattern.VisitorPattern;

public class ConcreateVisitorA extends Visitor{

	@Override
	public void VisitConcreateElementA(ConcreateElementA concreateElementA) {
		// TODO Auto-generated method stub
		System.out.println(concreateElementA.getName() + " , , 。");
		
	}

	@Override
	public void VisitConcreateElementB(ConcreateElementB concreateElementB) {
		// TODO Auto-generated method stub
		System.out.println(concreateElementB.getName() + " , , 。");
	}

}

 
 B
package DesignPattern.VisitorPattern;

public class ConcreateVisitorB extends Visitor{

	@Override
	public void VisitConcreateElementA(ConcreateElementA concreateElementA) {
		// TODO Auto-generated method stub
		System.out.println(concreateElementA.getName() + " , 。");
	}

	@Override
	public void VisitConcreateElementB(ConcreateElementB concreateElementB) {
		// TODO Auto-generated method stub
		System.out.println(concreateElementB.getName() + " , 。");
	}

}

 
 C
package DesignPattern.VisitorPattern;

public class ConcreateVisitorC extends Visitor{

	@Override
	public void VisitConcreateElementA(ConcreateElementA concreateElementA) {
		// TODO Auto-generated method stub
		System.out.println(concreateElementA.getName() + " , 。");
		
	}

	@Override
	public void VisitConcreateElementB(ConcreateElementB concreateElementB) {
		// TODO Auto-generated method stub
		System.out.println(concreateElementB.getName() + " , 。");
		
	}

}

 
 
package DesignPattern.VisitorPattern;

public abstract class Element {

	public abstract void Accept(Visitor visitor);
}

 
 A
package DesignPattern.VisitorPattern;

public class ConcreateElementA extends Element{
	
	private String name = "";
	
	public ConcreateElementA(String name) {
		this.name = name;
	}

	@Override
	public void Accept(Visitor visitor) {
		// TODO Auto-generated method stub
		visitor.VisitConcreateElementA(this);
	}
	
	public String getName() {
		return this.name;
	}

}

 
 B
package DesignPattern.VisitorPattern;

public class ConcreateElementB extends Element{

	private String name = "";
	
	public ConcreateElementB(String name) {
		this.name = name;
	}
	
	@Override
	public void Accept(Visitor visitor) {
		// TODO Auto-generated method stub
		visitor.VisitConcreateElementB(this);
	}
	
	public String getName() {
		return this.name;
	}

}

 
 
package DesignPattern.VisitorPattern;

public class Client {
    
	public static void main(String[] args) {
		ObjectStructure objectStructure = new ObjectStructure();
		objectStructure.add(new ConcreateElementA(" "));
		objectStructure.add(new ConcreateElementB(" "));
		ConcreateVisitorA v1 = new ConcreateVisitorA();
		ConcreateVisitorB v2 = new ConcreateVisitorB();
		ConcreateVisitorC v3 = new ConcreateVisitorC();
		objectStructure.Accept(v1);
		objectStructure.Accept(v2);
		objectStructure.Accept(v3);
	}
}

  
 

좋은 웹페이지 즐겨찾기