프로그램에서는 getter 함수를 사용해서 데이터에 접근하기도 한다.
불필요한 getter 함수를 없애고 코드를 간결하게 만든다.
여기서 불필요한 getter 함수가 바로 Middle Man이다.
코드를 통해서 단계를 살펴본다.
manager = aPerson.manager;
class Person {
get manager() { return this.department.manager; }
Person 클래스 안에는 manager 함수가 있다.
manager 함수는 department의 manager를 리턴한다.
manager = aPerson.department.manager;
클래스의 getter를 사용하지 않고 person.department.manager로 가져온다.
리팩토링 기법인 High Delegate에서는 encapsulate하는 것에 대해서 이야기 한다.
데이터에 바로 접근 할 수 없도록 한다.
그리고 매번 접근하려면 getter 역할을 해줄 함수를 만들어야 한다.
이건 좀 귀찮은 일이 될 수도 있다.
얼마나 변수를 숨기는게 적절한지는 판단하기 어려울 수 있다.
시간이 지날 수록 시스템은 변하고 캡슐화의 정도도 달라진다.
그러면 High Delegate를 사용할수도 있고, Remove Middle Man을 사용할수도 있다.
개발하는 시스템의 변화에 따라 맞춰서 사용하면 된다.
client code
manager = aPerson.manager;
class Person
get manager() { return this._department.manager; }
class Department
get manager() { return this._manager; }
-- javascript 의 get 키워드
class AAA{ // 캡슐화
// 변수
get hello(){return '변수';}
// 함수에 get 키워드를 쓰면 return 값을 바로 사용한다.
}
new AAA().hello // return 값 접근
'JavaScript│Node js' 카테고리의 다른 글
마틴 파울러 - 리팩토링 Replace loop with Pipeline (0) | 2019.11.20 |
---|---|
[리팩토링]Replace switch statement with Object (0) | 2019.11.08 |
마틴 파울러 - 리팩토링 - Extract Class (0) | 2019.10.31 |
마틴 파울러 - 리팩토링 - Split Phase (2) | 2019.10.18 |
react 앱 firebase 에 배포하기 (0) | 2019.10.16 |
댓글