UML diagram on wikipedia에서 프록시 클래스와 제목 클래스는 동일한 인터페이스를 구현합니다.프록시 패턴에 상속이 필요한 이유는 무엇입니까?
내가 아는 바로는 프록시 클래스의 목적은 위임입니다. 이것은 합성을 통해 할 수 있습니다. 위임 된 클래스는 동일한 인터페이스를 구현할 필요가 없습니다.
해당 클래스가 프록시 클래스와 동일한 인터페이스를 구현해야하는 이유가 있습니까?
UML diagram on wikipedia에서 프록시 클래스와 제목 클래스는 동일한 인터페이스를 구현합니다.프록시 패턴에 상속이 필요한 이유는 무엇입니까?
내가 아는 바로는 프록시 클래스의 목적은 위임입니다. 이것은 합성을 통해 할 수 있습니다. 위임 된 클래스는 동일한 인터페이스를 구현할 필요가 없습니다.
해당 클래스가 프록시 클래스와 동일한 인터페이스를 구현해야하는 이유가 있습니까?
해당 클래스가 프록시 클래스와 동일한 인터페이스를 구현해야하는 이유가 있습니까?
네하지만 프록시 주변의 다른 방법은 주제
클라이언트가 사용중인 인스턴스가 프록시 실현하지 않는 한 동일한 인터페이스를 구현해야입니다! 클라이언트는 그것이라고 생각합니다. Subject
프록시와 제목은 동일한 작업 집합을 제공해야합니다. 클라이언트는 요청 된 인스턴스, 프록시 또는 주제를 인식 할 수 없습니다. 그것은 그것을 위해 숨겨져 있습니다. 이 때문에 두 클래스 모두 동일한 인터페이스를 구현합니다.
그러면 어댑터 (및 개체 어댑터, Gang of Four 서적의 용어를 사용하는 것과 유사합니다). 어댑터는 일반적으로 나중에 인터페이스 적응이 필요한 프로젝트에서 발견 할 때 사용됩니다. 당신은 프락시를 선전이라고 생각합니다.
이유는 프록시가 클라이언트에게 투명해야한다는 것입니다. 프록시가 주체와 다른 인터페이스를 갖는다면이 투명성은 깨질 것입니다. 모든 주제가 프록시 될 필요가없는 유스 케이스를 생각해보십시오. 모든 객체가 '원격'은 아닙니다.
이 질문을 통해 차이점을 이해하는 데 도움이되었다고 생각합니다. http://stackoverflow.com/questions/350404/how-do-the-proxy-decorator-adapter-and-bridge-patterns-differ – neverendingqs
이것은 공장이 관련되어있는 경우에만 가치가 있습니까? 클라이언트가 주제를 사용 중이고 나중에 프록시를 대신 사용하려면 어떻게해야합니까? (반대의 경우도 마찬가지 임). – neverendingqs
"Client"가 어떤 구현인지 알지 못하게하려면 클라이언트에'Subject' 인스턴스 (프록시 또는 실제 주체)를 제공해야합니다. 이 작업은 팩토리 패턴을 통해 수행 할 수 있지만 생성자 또는 메서드 호출을 통해 종속성을 주입 할 수도 있습니다. – dkatzel
클라이언트가 해당 패턴보다 먼저 주제를 사용하는 경우 프록시 패턴의 주제 추상화 (이전 주제와 거의 유사 함)를 사용하도록 클라이언트를 수정해야합니다. 그런 다음 클라이언트는 주제 또는 프록시와 대화하고 있는지 여부를 알지 못합니다. – Fuhrmanator