해당 포스팅은 인프런 백기선님의 '리팩토링'을 학습 후 정리한 내용입니다.
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;
}
}
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;
}
}
class PersonTest {
@Test
void manager() {
Person keesun = new Person("keesun");
Person nick = new Person("nick");
keesun.setDepartment(new Department("m365deploy", nick));
Person manager = getManager(keesun);
assertEquals(nick, manager);
}
private Person getManager(Person keesun) {
return keesun.getDepartment().getManager();
}
}
테스트 코드에서 manager 를 알기 위해서 계속된 참조를 통해서 알아내고 있다.
위임 함수를 사용하여 캡슐화한다.
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();
}
}
getMaganer() 위임 함수를 추가하여 캡슐화하여 사용한다.