From 914b38fd18883aa07d1a916f08a159f4c9178e76 Mon Sep 17 00:00:00 2001 From: haerong22 Date: Wed, 6 Apr 2022 00:32:51 +0900 Subject: [PATCH] refactoring : method chain - hide delegate --- .../_37_hide_delegate/Department.java | 21 ++++++++++++++ .../_37_hide_delegate/Person.java | 28 +++++++++++++++++++ .../_37_hide_delegate/_before/Department.java | 21 ++++++++++++++ .../_37_hide_delegate/_before/Person.java | 24 ++++++++++++++++ .../_37_hide_delegate/PersonTest.java | 19 +++++++++++++ 5 files changed, 113 insertions(+) create mode 100644 refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Department.java create mode 100644 refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Person.java create mode 100644 refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Department.java create mode 100644 refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Person.java create mode 100644 refactoring/src/test/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/PersonTest.java diff --git a/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Department.java b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Department.java new file mode 100644 index 00000000..d5ebfa77 --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Department.java @@ -0,0 +1,21 @@ +package com.example.refactoring._17_method_chains._37_hide_delegate; + +public class Department { + + private String chargeCode; + + private Person manager; + + public Department(String chargeCode, Person manager) { + this.chargeCode = chargeCode; + this.manager = manager; + } + + public String getChargeCode() { + return chargeCode; + } + + public Person getManager() { + return manager; + } +} diff --git a/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Person.java b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Person.java new file mode 100644 index 00000000..ef8d5e5b --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/Person.java @@ -0,0 +1,28 @@ +package com.example.refactoring._17_method_chains._37_hide_delegate; + +public class Person { + + private String name; + + private Department department; + + public Person(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } + + Person getManager() { + return getDepartment().getManager(); + } +} diff --git a/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Department.java b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Department.java new file mode 100644 index 00000000..789c9c32 --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Department.java @@ -0,0 +1,21 @@ +package com.example.refactoring._17_method_chains._37_hide_delegate._before; + +public class Department { + + private String chargeCode; + + private Person manager; + + public Department(String chargeCode, Person manager) { + this.chargeCode = chargeCode; + this.manager = manager; + } + + public String getChargeCode() { + return chargeCode; + } + + public Person getManager() { + return manager; + } +} diff --git a/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Person.java b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Person.java new file mode 100644 index 00000000..de3c257f --- /dev/null +++ b/refactoring/src/main/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/_before/Person.java @@ -0,0 +1,24 @@ +package com.example.refactoring._17_method_chains._37_hide_delegate._before; + +public class Person { + + private String name; + + private Department department; + + public Person(String name) { + this.name = name; + } + + public String getName() { + return name; + } + + public Department getDepartment() { + return department; + } + + public void setDepartment(Department department) { + this.department = department; + } +} diff --git a/refactoring/src/test/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/PersonTest.java b/refactoring/src/test/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/PersonTest.java new file mode 100644 index 00000000..4a670158 --- /dev/null +++ b/refactoring/src/test/java/com/example/refactoring/_17_method_chains/_37_hide_delegate/PersonTest.java @@ -0,0 +1,19 @@ +package com.example.refactoring._17_method_chains._37_hide_delegate; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.*; + +class PersonTest { + + @Test + void manager() { + Person kim = new Person("kim"); + Person nick = new Person("nick"); + kim.setDepartment(new Department("m365deploy", nick)); + + Person manager = kim.getManager(); + assertEquals(nick, manager); + } + +} \ No newline at end of file