> For the complete documentation index, see [llms.txt](https://blakes-organization.gitbook.io/rainsister/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://blakes-organization.gitbook.io/rainsister/design-pattern/visitor-pattern.md).

# Visitor Pattern

<figure><img src="/files/jehqLOecvraoHfFHmH5A" alt=""><figcaption></figcaption></figure>

예시코드

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

```java
public class MyVisitor implements Visitor {
 
	@Override
	public void visit(Subject sub) {
		System.out.println("visit the subject："+sub.getSubject());
	}
}
```

```java
public interface Subject {
	public void accept(Visitor visitor);
	public String getSubject();
}
```

```java
public class MySubject implements Subject {
 
	@Override
	public void accept(Visitor visitor) {
		visitor.visit(this);
	}
 
	@Override
	public String getSubject() {
		return "love";
	}
}
```

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