[java design pattern] visitor pattern

Step 1: Create an abstract visitor

public interface Visitor {
	  public void visit(Subject sub);
	  
}

Step 2: Specific Visitors

public class MyVisitor implements Visitor {

	@Override
	public void visit(Subject sub) {
       System.out.println("Access object: "+sub.getSubject());
	}

}

Step 3: The accessed object interface Subject

public interface Subject {
    //accept the object that will access it
	public void accept(Visitor visitor);
	
	//getSubject() gets the property to be accessed
	public String getSubject();
	
}

Step 4: The concrete element node implements the acceptance operation MySubject specified by the abstract node

public class MySubject implements Subject{

	@Override
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}

	@Override
	public String getSubject() {
		return "happy";
	}

}

Step 5: Test

public class Test {
   public static void main(String[] args) {
	Visitor visitor=new MyVisitor();
	Subject sub=new MySubject();
	sub.accept(visitor);
	
  }
}




Guess you like

Origin http://43.154.161.224:23101/article/api/json?id=325805406&siteId=291194637