2. 7장. 객체간의 기능 이동 8장. 데이터 구성 Self Encapsulate Field Introduce Foreign Method Introduce Local Extension
3. 7장. 객체간의 기능 이동 Foreign Method Server class Client class Server Class쪽에서 xx한 메소드가 필요해.!!
4. 7장. 객체간의 기능 이동 Foreign Method Server class Client class Server Class의 코드를 수정할 수가 없어! “안돼. 안되잖아.” – 하프라이프 더빙
5. 7장. 객체간의 기능 이동 Foreign Method Server Class 측의 소스를 변경할 수 없으니, Client Class 측에서 필요로 하는 곳에 기능을 추가 기능이 필요한 곳이 여러군데이다.!? 기능에 대한 코드를 Method로 만들어 놓고, 필요한 곳에서 Method를 호출하도록 하자.!
6. 7장. 객체간의 기능 이동 Foreign Method Server Class 측의 소스를 변경할 수 없으니, Client Class 측에서 필요로 하는 곳에 기능을 추가 기능이 필요한 곳이 여러군데이다.!? 기능에 대한 코드를 Method로 만들어 놓고, 필요한 곳에서 Method를 호출하도록 하자.!
7. 7장. 객체간의 기능 이동 Foreign Method 이 함수는 다른 클래스에 존재했어야 하는 함수이다.!!
8. 7장. 객체간의 기능 이동 Foreign Method Server class Client class 필요한 건 이렇게 되는 것인데.!
9. 7장. 객체간의 기능 이동 Foreign Method 구현 절차. Server class Client class 1. Client Class에 필요한 기능의 메소드를 만든다. Client Class의 어떤 부분에도 접근해서는 안된다. => Server Class에서 Client Class에 접근할 수는 없으니.
10. 7장. 객체간의 기능 이동 Foreign Method 구현 절차. Server class Client class 2. 첫번째파라미터로Server Class의 인스턴스를 받는다. , ,
11. 7장. 객체간의 기능 이동 Foreign Method 구현 절차. Server class Client class 3. 주석을 달아놓자.! , , // foreign method
12. 7장. 객체간의 기능 이동 Local Extension Server class Client class
13. 7장. 객체간의 기능 이동 Local Extension Server class Client class Server Class의 코드 수정 불가.!
14. 7장. 객체간의 기능 이동 Local Extension Client class Server class , , // foreign method , , Foreign Method 가 많아지게 된 상황.! // foreign method , , // foreign method
15.
16.
17. 7장. 객체간의 기능 이동 Local Extension Sub Class or Wapper 원래의 Server Class를 사용하는 것이 아닌, Local Extension 을 만들어서 사용할 수 있는 것.
18. 7장. 객체간의 기능 이동 Local Extension Sub Class Wrapper Class Server class Server class Foreign Method들을 한 곳으로 모아놓지 않으면, 다른 클래스들이 복잡해 지고Method들의 재사용이 힘들어 진다.
19. 7장. 객체간의 기능 이동 Local Extension Sub Class Wrapper Class Server class Server class 무엇을 사용할 것인지는 여러분의 선택.!
20. 7장. 객체간의 기능 이동 Local Extension 제작 절차 … 변환 생성자를Extension클래스에 추가한다. … … … => 생성자는 원래 클래스를 인자로 받는다.