![Page 2: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/2.jpg)
Inline Class
![Page 3: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/3.jpg)
![Page 4: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/4.jpg)
Opposite Extract Class
![Page 5: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/5.jpg)
별일 없는 클래스는 그냥 다른 클래스와 합치자!
![Page 6: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/6.jpg)
1. 어느 클래스를 어디로 집어 넣을지 결정한다.
![Page 7: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/7.jpg)
TelephoneNumber Class 를 Person 클래스로 집어넣기로 결정한다. TelephoneNumber 클래스를 Person에서만 사용하고 다른 곳에서는 쓰지 않기 때문이다.
![Page 8: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/8.jpg)
2. 소스에서 선택된 클래스로 참조하는 부분을 이동할 클
래스로 변경한다.
![Page 9: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/9.jpg)
![Page 10: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/10.jpg)
3. Build & Test 당연히 실패한다.
![Page 11: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/11.jpg)
4. Move Method, Move Field 등으로 함수와
필드를 옮긴다.
![Page 12: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/12.jpg)
3,4 번을 계속 반복한다.
![Page 13: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/13.jpg)
Hide Delegate
![Page 14: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/14.jpg)
![Page 15: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/15.jpg)
![Page 16: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/16.jpg)
Opposite Remove Middle Man
![Page 17: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/17.jpg)
Encapsulation 을 위해서, 주요 처리하는 클래스를 외부에서 보지 못하도록 한다.
![Page 18: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/18.jpg)
1. Delegate 에 있는 Method 를 Server 로 옮
깁니다.
![Page 19: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/19.jpg)
2. Client 는 Server 를 호출 하도록 변경합니다.
![Page 20: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/20.jpg)
3. BUILD & TEST
![Page 21: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/21.jpg)
4. 더 이상 Client 에서 delegate 코드를 사용하지 않으면 Server에서 Delegate를 주
는 부분을 제거한다.
![Page 22: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/22.jpg)
Remove Middle Man
![Page 23: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/23.jpg)
![Page 24: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/24.jpg)
Opposite Hide Delegate
![Page 25: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/25.jpg)
거의 모든 기능을 Delegate 에서만 처리하는 클래스가 Middle Man 이 되어버린다. 이를 제거하는 방법이 Remove Middle Man 이다.
![Page 26: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/26.jpg)
1. Delegate 를 던져주는 Accessor 를 만든다.
![Page 27: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/27.jpg)
2. Client 에서 사용하는 method 를 delegate 를 사용하도록 변경한다.
![Page 28: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/28.jpg)
3. BUILD & TEST
![Page 29: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/29.jpg)
Q & A
![Page 30: Refactoring(inline class, Hide delegate, remove middle man)](https://reader033.vdocuments.site/reader033/viewer/2022050905/548408d2b4af9f730d8b4a9f/html5/thumbnails/30.jpg)
Thank You