From 69c62d780d32d32e5c5a8e0e04756cd4c2e84e64 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Sun, 12 Dec 2021 19:04:48 +0900 Subject: [PATCH] design patterns : chain of responsibillity --- .../after/AuthRequestHandler.java | 14 ++++++++++++ .../chain_of_responsibility/after/Client.java | 22 +++++++++++++++++++ .../after/LoggingRequestHandler.java | 14 ++++++++++++ .../after/PrintRequestHandler.java | 14 ++++++++++++ .../after/Request.java | 18 +++++++++++++++ .../after/RequestHandler.java | 16 ++++++++++++++ .../before/AuthRequestHandler.java | 11 ++++++++++ .../before/Client.java | 10 +++++++++ .../before/LoggingRequestHandler.java | 10 +++++++++ .../before/Request.java | 18 +++++++++++++++ .../before/RequestHandler.java | 8 +++++++ 11 files changed, 155 insertions(+) create mode 100644 design-pattern/gof/src/chain_of_responsibility/after/AuthRequestHandler.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/after/Client.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/after/LoggingRequestHandler.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/after/PrintRequestHandler.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/after/Request.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/after/RequestHandler.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/before/AuthRequestHandler.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/before/Client.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/before/LoggingRequestHandler.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/before/Request.java create mode 100644 design-pattern/gof/src/chain_of_responsibility/before/RequestHandler.java diff --git a/design-pattern/gof/src/chain_of_responsibility/after/AuthRequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/after/AuthRequestHandler.java new file mode 100644 index 00000000..39bb0eb7 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/after/AuthRequestHandler.java @@ -0,0 +1,14 @@ +package chain_of_responsibility.after; + +public class AuthRequestHandler extends RequestHandler { + + public AuthRequestHandler(RequestHandler nextHandler) { + super(nextHandler); + } + + @Override + public void handle(Request request) { + System.out.println("인증이 되었나?"); + super.handle(request); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/after/Client.java b/design-pattern/gof/src/chain_of_responsibility/after/Client.java new file mode 100644 index 00000000..bcc93ab6 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/after/Client.java @@ -0,0 +1,22 @@ +package chain_of_responsibility.after; + +public class Client { + + private RequestHandler requestHandler; + + public Client(RequestHandler requestHandler) { + this.requestHandler = requestHandler; + } + + public void doWork() { + Request request = new Request("이번 놀이는 뽑기입니다."); + requestHandler.handle(request); + } + + public static void main(String[] args) { + RequestHandler chain = new AuthRequestHandler(new LoggingRequestHandler(new PrintRequestHandler(null))); + + Client client = new Client(chain); + client.doWork(); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/after/LoggingRequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/after/LoggingRequestHandler.java new file mode 100644 index 00000000..097cbaa2 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/after/LoggingRequestHandler.java @@ -0,0 +1,14 @@ +package chain_of_responsibility.after; + +public class LoggingRequestHandler extends RequestHandler { + + public LoggingRequestHandler(RequestHandler nextHandler) { + super(nextHandler); + } + + @Override + public void handle(Request request) { + System.out.println("로깅"); + super.handle(request); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/after/PrintRequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/after/PrintRequestHandler.java new file mode 100644 index 00000000..bad96f98 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/after/PrintRequestHandler.java @@ -0,0 +1,14 @@ +package chain_of_responsibility.after; + +public class PrintRequestHandler extends RequestHandler { + + public PrintRequestHandler(RequestHandler nextHandler) { + super(nextHandler); + } + + @Override + public void handle(Request request) { + System.out.println(request.getBody()); + super.handle(request); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/after/Request.java b/design-pattern/gof/src/chain_of_responsibility/after/Request.java new file mode 100644 index 00000000..df832f63 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/after/Request.java @@ -0,0 +1,18 @@ +package chain_of_responsibility.after; + +public class Request { + + private String body; + + public Request(String body) { + this.body = body; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/after/RequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/after/RequestHandler.java new file mode 100644 index 00000000..8f1590b1 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/after/RequestHandler.java @@ -0,0 +1,16 @@ +package chain_of_responsibility.after; + +public abstract class RequestHandler { + + private RequestHandler nextHandler; + + public RequestHandler(RequestHandler nextHandler) { + this.nextHandler = nextHandler; + } + + public void handle(Request request) { + if (nextHandler != null) { + nextHandler.handle(request); + } + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/before/AuthRequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/before/AuthRequestHandler.java new file mode 100644 index 00000000..8dd7067f --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/before/AuthRequestHandler.java @@ -0,0 +1,11 @@ +package chain_of_responsibility.before; + +public class AuthRequestHandler extends RequestHandler { + + @Override + public void handler(Request request) { + System.out.println("인증이 되었나?"); + System.out.println("이 핸들러를 사용할 수 있는 유저인가?"); + super.handler(request); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/before/Client.java b/design-pattern/gof/src/chain_of_responsibility/before/Client.java new file mode 100644 index 00000000..083317bc --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/before/Client.java @@ -0,0 +1,10 @@ +package chain_of_responsibility.before; + +public class Client { + + public static void main(String[] args) { + Request request = new Request("무궁화 꽃이 피었습니다."); + RequestHandler requestHandler = new AuthRequestHandler(); + requestHandler.handler(request); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/before/LoggingRequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/before/LoggingRequestHandler.java new file mode 100644 index 00000000..494996cb --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/before/LoggingRequestHandler.java @@ -0,0 +1,10 @@ +package chain_of_responsibility.before; + +public class LoggingRequestHandler extends RequestHandler { + + @Override + public void handler(Request request) { + System.out.println("로깅"); + super.handler(request); + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/before/Request.java b/design-pattern/gof/src/chain_of_responsibility/before/Request.java new file mode 100644 index 00000000..cbe92ea8 --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/before/Request.java @@ -0,0 +1,18 @@ +package chain_of_responsibility.before; + +public class Request { + + private String body; + + public Request(String body) { + this.body = body; + } + + public String getBody() { + return body; + } + + public void setBody(String body) { + this.body = body; + } +} diff --git a/design-pattern/gof/src/chain_of_responsibility/before/RequestHandler.java b/design-pattern/gof/src/chain_of_responsibility/before/RequestHandler.java new file mode 100644 index 00000000..a8375f6f --- /dev/null +++ b/design-pattern/gof/src/chain_of_responsibility/before/RequestHandler.java @@ -0,0 +1,8 @@ +package chain_of_responsibility.before; + +public class RequestHandler { + + public void handler(Request request) { + System.out.println(request.getBody()); + } +}