프록시 패턴 예제

클래스 CommandExecutorProxy에서는 “개인 CommandExecutor 실행기;” “개인 CommandExecutorImpl 실행기;”를 변경하는 것이 더 효율적입니다. 구현을 직접 사용하지 않습니까? 프록시 패턴을 적용할 수 있는 네 가지 일반적인 상황이 있습니다. 개체에 대한 액세스를 제어하는 기능이 필요한 경우도 있습니다. 예를 들어 비용이 많이 드는 일부 개체의 몇 가지 메서드만 사용해야 하는 경우 완전히 필요할 때 해당 개체를 초기화합니다. 그 시점까지 우리는 무거운 물체와 동일한 인터페이스를 노출 하는 일부 라이트 개체를 사용할 수 있습니다. 이러한 라이트 오브젝트를 프록시라고 하며, 필요한 경우 무거운 오브젝트를 인스턴스화하고 그 다음에는 일부 라이트 오브젝트를 대신 사용합니다. 프록시는 변경할 수 없는 코드를 클래스에 몇 가지 추가 동작을 추가해야 할 때 매우 유용합니다. 프록시 패턴은 원래 서비스 개체와 동일한 인터페이스를 가진 새 프록시 클래스를 만들 것을 제안합니다. 그런 다음 프록시 개체를 원래 개체의 모든 클라이언트에 전달하도록 앱을 업데이트합니다. 클라이언트로부터 요청을 받으면 프록시는 실제 서비스 개체를 만들고 모든 작업을 위임합니다. 평소와 같이 디자인 패턴을 다룰 때 인터페이스에 코드를 지정합니다. 이 경우 클라이언트가 알고 있는 인터페이스는 제목입니다.

프록시 및 RealSubject 개체 모두 주체 인터페이스를 구현하지만 클라이언트는 프록시를 거치지 않고 RealSubject에 액세스하지 못할 수 있습니다. 프록시가 RealSubject 개체의 생성을 처리하는 것은 매우 일반적이지만 적어도 메시지를 전달할 수 있도록 참조가 있습니다. 프록시는 실제로 필요할 때까지 전체 개체를 만들지 않으려는 지연 로드 관련 유스 케이스를 구현하는 데 많이 사용됩니다. 다음 Java 예제에서는 “가상 프록시” 패턴을 보여 줍니다. ProxyImage 클래스는 원격 메서드에 액세스하는 데 사용됩니다. 개체에 대한 액세스를 제어하려는 이유는 무엇입니까? 다음은 방대한 양의 시스템 리소스를 소비하는 대규모 개체가 있다는 예입니다. 당신은 때때로 그것을 필요로하지만, 항상. 아래 코드는 샘플 이미지 뷰어 프로그램을 보여 줍니다.

이 프로그램은 단순히 세 개의 이미지를 로드하고 프록시 패턴을 사용하여 한 번, 다른 시간만 직접 렌더링합니다. 프록시 패턴을 사용할 때는 세 개의 이미지가 로드되었지만 렌더링해야 할 때까지 고해상도 이미지가 메모리에 로드되지 않으며 프록시를 사용하지 않는 부분에서는 세 개의 이미지가 메모리에 로드됩니다. 실제로 렌더링됩니다. 이 패턴이 개체 생성을 지연시키는 방법. 프록시에서 실제 개체 클래스를 확장했습니다. 프록시 개체를 만들면 super 클래스 생성자도 호출됩니다. 프록시 [1] 디자인 패턴은 유연하고 재사용 가능한 객체 지향 소프트웨어, 즉 구현, 변경, 테스트 및 구현하기 쉬운 객체를 설계하기 위해 반복되는 설계 문제를 해결하는 방법을 설명하는 23개의 잘 알려진 GoF 디자인 패턴 중 하나입니다. 재사용. 주어진 예제에서, 우리는 클라이언트가 뭔가를 할 액세스 해야 하는 RealObject.

프레임워크에 RealObject 의 인스턴스를 제공하도록 요청합니다. 그러나 이 개체에 대한 액세스를 보호해야 하므로 프레임워크는 RealObjectProxy에 대한 참조를 반환합니다. 두 패턴의 주요 차이점은 책임이다. 데코레이터는 책임을 추가하는 데 중점을 두지만 프록시는 개체에 대한 액세스를 제어하는 데 중점을 둡니다.

This entry was posted in Uncategorized by admin. Bookmark the permalink.

Comments are closed.