Inline Class
  Hide Delegate
Remove Middle man
          charsyam@naver.com
Inline Class
Opposite
Extract Class
별일 없는 클래스는 그냥
다른 클래스와 합치자!
1. 어느 클래스를 어디로 집어
    넣을지 결정한다.
TelephoneNumber Class 를 Person 클래스로 집어넣
기로 결정한다. TelephoneNumber 클래스를 Person에
서만 사용하고 다른 곳에서는 쓰지 않기 때문이다.
2. 소스에서 선택된 클래스
로 참조하는 부분을 이동할 클
    래스로 변경한다.
3. Build & Test
당연히 실패한다.
4. Move Method,
Move Field 등으로 함수와
    필드를 옮긴다.
3,4 번을
계속 반복한다.
Hide Delegate
Opposite
Remove Middle Man
Encapsulation 을 위해서, 주요 처리하는 클래스를 외부에
서 보지 못하도록 한다.
1. Delegate 에 있는
Method 를 Server 로 옮
         깁니다.
2. Client 는 Server 를
호출 하도록 변경합니다.
3. BUILD & TEST
4. 더 이상 Client 에서
delegate 코드를 사용하지 않으
면 Server에서 Delegate를 주
     는 부분을 제거한다.
Remove Middle Man
Opposite
Hide Delegate
거의 모든 기능을 Delegate 에서만 처리하는 클래스가
Middle Man 이 되어버린다.

이를 제거하는 방법이 Remove Middle Man 이다.
1. Delegate 를 던져주는
  Accessor 를 만든다.
2. Client 에서 사용하는
method 를 delegate 를
  사용하도록 변경한다.
3. BUILD & TEST
Q&A
Thank
 You

Refactoring(inline class, Hide delegate, remove middle man)