diff --git a/design-pattern/gof/src/visitor/after/Circle.java b/design-pattern/gof/src/visitor/after/Circle.java new file mode 100644 index 00000000..4549c27f --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Circle.java @@ -0,0 +1,9 @@ +package visitor.after; + +public class Circle implements Shape { + + @Override + public void accept(Device device) { + device.print(this); + } +} diff --git a/design-pattern/gof/src/visitor/after/Client.java b/design-pattern/gof/src/visitor/after/Client.java new file mode 100644 index 00000000..ed767ddb --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Client.java @@ -0,0 +1,10 @@ +package visitor.after; + +public class Client { + + public static void main(String[] args) { + Shape rectangle = new Rectangle(); + Device device = new Pad(); + rectangle.accept(device); + } +} diff --git a/design-pattern/gof/src/visitor/after/Device.java b/design-pattern/gof/src/visitor/after/Device.java new file mode 100644 index 00000000..10d96932 --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Device.java @@ -0,0 +1,9 @@ +package visitor.after; + +public interface Device { + void print(Circle circle); + + void print(Rectangle rectangle); + + void print(Triangle triangle); +} diff --git a/design-pattern/gof/src/visitor/after/Pad.java b/design-pattern/gof/src/visitor/after/Pad.java new file mode 100644 index 00000000..dd075c7b --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Pad.java @@ -0,0 +1,18 @@ +package visitor.after; + +public class Pad implements Device { + @Override + public void print(Circle circle) { + System.out.println("Print Circle to Pad"); + } + + @Override + public void print(Rectangle rectangle) { + System.out.println("Print Rectangle to Pad"); + } + + @Override + public void print(Triangle triangle) { + System.out.println("Print Triangle to Pad"); + } +} diff --git a/design-pattern/gof/src/visitor/after/Phone.java b/design-pattern/gof/src/visitor/after/Phone.java new file mode 100644 index 00000000..261f5a41 --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Phone.java @@ -0,0 +1,18 @@ +package visitor.after; + +public class Phone implements Device { + @Override + public void print(Circle circle) { + System.out.println("Print Circle to Phone"); + } + + @Override + public void print(Rectangle rectangle) { + System.out.println("Print Rectangle to Phone"); + } + + @Override + public void print(Triangle triangle) { + System.out.println("Print Triangle to Phone"); + } +} diff --git a/design-pattern/gof/src/visitor/after/Rectangle.java b/design-pattern/gof/src/visitor/after/Rectangle.java new file mode 100644 index 00000000..4c8abede --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Rectangle.java @@ -0,0 +1,9 @@ +package visitor.after; + +public class Rectangle implements Shape { + + @Override + public void accept(Device device) { + device.print(this); + } +} diff --git a/design-pattern/gof/src/visitor/after/Shape.java b/design-pattern/gof/src/visitor/after/Shape.java new file mode 100644 index 00000000..89203bbb --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Shape.java @@ -0,0 +1,7 @@ +package visitor.after; + +public interface Shape { + + void accept(Device device); + +} diff --git a/design-pattern/gof/src/visitor/after/Triangle.java b/design-pattern/gof/src/visitor/after/Triangle.java new file mode 100644 index 00000000..dfd0e6e7 --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Triangle.java @@ -0,0 +1,9 @@ +package visitor.after; + +public class Triangle implements Shape { + + @Override + public void accept(Device device) { + device.print(this); + } +} diff --git a/design-pattern/gof/src/visitor/after/Watch.java b/design-pattern/gof/src/visitor/after/Watch.java new file mode 100644 index 00000000..0ab7d137 --- /dev/null +++ b/design-pattern/gof/src/visitor/after/Watch.java @@ -0,0 +1,18 @@ +package visitor.after; + +public class Watch implements Device { + @Override + public void print(Circle circle) { + System.out.println("Print Circle to Watch"); + } + + @Override + public void print(Rectangle rectangle) { + System.out.println("Print Rectangle to Watch"); + } + + @Override + public void print(Triangle triangle) { + System.out.println("Print Triangle to Watch"); + } +} diff --git a/design-pattern/gof/src/visitor/before/Circle.java b/design-pattern/gof/src/visitor/before/Circle.java new file mode 100644 index 00000000..cffd0049 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Circle.java @@ -0,0 +1,12 @@ +package visitor.before; + +public class Circle implements Shape { + @Override + public void printTo(Device device) { + if (device instanceof Phone) { + System.out.println("print Circle to phone"); + } else if (device instanceof Watch) { + System.out.println("print Circle to watch"); + } + } +} diff --git a/design-pattern/gof/src/visitor/before/Client.java b/design-pattern/gof/src/visitor/before/Client.java new file mode 100644 index 00000000..2e410544 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Client.java @@ -0,0 +1,10 @@ +package visitor.before; + +public class Client { + + public static void main(String[] args) { + Shape rectangle = new Rectangle(); + Device device = new Phone(); + rectangle.printTo(device); + } +} diff --git a/design-pattern/gof/src/visitor/before/Device.java b/design-pattern/gof/src/visitor/before/Device.java new file mode 100644 index 00000000..68c49c6d --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Device.java @@ -0,0 +1,4 @@ +package visitor.before; + +public interface Device { +} diff --git a/design-pattern/gof/src/visitor/before/Phone.java b/design-pattern/gof/src/visitor/before/Phone.java new file mode 100644 index 00000000..f0cbced1 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Phone.java @@ -0,0 +1,4 @@ +package visitor.before; + +public class Phone implements Device{ +} diff --git a/design-pattern/gof/src/visitor/before/Rectangle.java b/design-pattern/gof/src/visitor/before/Rectangle.java new file mode 100644 index 00000000..83f5c0e6 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Rectangle.java @@ -0,0 +1,13 @@ +package visitor.before; + +public class Rectangle implements Shape { + + @Override + public void printTo(Device device) { + if (device instanceof Phone) { + System.out.println("print Rectangle to phone"); + } else if (device instanceof Watch) { + System.out.println("print Rectangle to watch"); + } + } +} diff --git a/design-pattern/gof/src/visitor/before/Shape.java b/design-pattern/gof/src/visitor/before/Shape.java new file mode 100644 index 00000000..e1a11a35 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Shape.java @@ -0,0 +1,7 @@ +package visitor.before; + +public interface Shape { + + void printTo(Device device); + +} diff --git a/design-pattern/gof/src/visitor/before/Triangle.java b/design-pattern/gof/src/visitor/before/Triangle.java new file mode 100644 index 00000000..e93ea055 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Triangle.java @@ -0,0 +1,14 @@ +package visitor.before; + +public class Triangle implements Shape { + + @Override + public void printTo(Device device) { + if (device instanceof Phone) { + System.out.println("print Triangle to Phone"); + } else if (device instanceof Watch) { + System.out.println("print Triangle to Watch"); + } + } + +} diff --git a/design-pattern/gof/src/visitor/before/Watch.java b/design-pattern/gof/src/visitor/before/Watch.java new file mode 100644 index 00000000..6145c032 --- /dev/null +++ b/design-pattern/gof/src/visitor/before/Watch.java @@ -0,0 +1,4 @@ +package visitor.before; + +public class Watch implements Device{ +}