diff --git a/design-pattern/src/Visitor/Application.java b/design-pattern/src/Visitor/Application.java new file mode 100644 index 00000000..b061a0e7 --- /dev/null +++ b/design-pattern/src/Visitor/Application.java @@ -0,0 +1,23 @@ +package Visitor; + +import java.util.ArrayList; + +public class Application { + public static void main(String[] args) { + + ArrayList visitables = new ArrayList(); + visitables.add(new VisitableA(1)); + visitables.add(new VisitableA(2)); + visitables.add(new VisitableA(3)); + visitables.add(new VisitableA(4)); + visitables.add(new VisitableA(5)); + + Visitor visitor = new VisitorA(); + + for (Visitable visitable: visitables) { + visitable.accept(visitor); + } + + System.out.println(((VisitorA)visitor).getAgeSum()); + } +} diff --git a/design-pattern/src/Visitor/Visitable.java b/design-pattern/src/Visitor/Visitable.java new file mode 100644 index 00000000..b5c6dcc1 --- /dev/null +++ b/design-pattern/src/Visitor/Visitable.java @@ -0,0 +1,5 @@ +package Visitor; + +public interface Visitable { + void accept(Visitor visitor); +} diff --git a/design-pattern/src/Visitor/VisitableA.java b/design-pattern/src/Visitor/VisitableA.java new file mode 100644 index 00000000..4e3a285a --- /dev/null +++ b/design-pattern/src/Visitor/VisitableA.java @@ -0,0 +1,23 @@ +package Visitor; + +public class VisitableA implements Visitable{ + + private int age; + + public VisitableA(int age) { + this.age = age; + } + + @Override + public void accept(Visitor visitor) { + visitor.visit(this); + } + + public int getAge() { + return age; + } + + public void setAge(int age) { + this.age = age; + } +} diff --git a/design-pattern/src/Visitor/Visitor b/design-pattern/src/Visitor/Visitor new file mode 100644 index 00000000..d9834f7f --- /dev/null +++ b/design-pattern/src/Visitor/Visitor @@ -0,0 +1,2 @@ +Visitor Pattern + - 객체에서 처리 분리하기 diff --git a/design-pattern/src/Visitor/Visitor.java b/design-pattern/src/Visitor/Visitor.java new file mode 100644 index 00000000..e0b98991 --- /dev/null +++ b/design-pattern/src/Visitor/Visitor.java @@ -0,0 +1,5 @@ +package Visitor; + +public interface Visitor { + void visit(Visitable visitable); +} diff --git a/design-pattern/src/Visitor/VisitorA.java b/design-pattern/src/Visitor/VisitorA.java new file mode 100644 index 00000000..a86ec5f6 --- /dev/null +++ b/design-pattern/src/Visitor/VisitorA.java @@ -0,0 +1,25 @@ +package Visitor; + +public class VisitorA implements Visitor{ + + private int ageSum; + + public VisitorA() { + ageSum = 0; + } + + @Override + public void visit(Visitable visitable) { + if(visitable instanceof VisitableA) { + + ageSum += ((VisitableA) visitable).getAge(); + + } else { + + } + } + + public int getAgeSum() { + return ageSum; + } +}