이 기사에서는 Java의 프록시 모델을 기반으로 적포도주 분포를 해결하는 문제에 대해 설명합니다. 다음과 같이 참조에 대해 공유하십시오.
1. 패턴 정의
프록시 모드에서는 두 개의 객체가 동일한 요청을 처리하는 데 참여합니다. 수신 된 요청은 프록시 객체에 의해 프로세스를 위해 실제 객체에 위임됩니다. 프록시 객체는 요청의 액세스를 제어하여 클라이언트 응용 프로그램과 실제 객체 사이에 중재 브리지를 재생합니다. 프록시 모드는 상속 대신 객체 집계를 사용하여 소프트웨어 모듈 간의 커플 링을 효과적으로 줄입니다.
2. 모델 예제
1 패턴 분석
우리는이 모델을 설명하기 위해 와인 배포를 빌려줍니다.
2 프록시 모드 정적 클래스 다이어그램
3 코드 예제
3.1 레드 와인 공장 인터페이스 1 Iredwine
package com.demo.real;/** * 레드 와인 인터페이스 * * @author */public interface iredwine {// 레드 와인 공공 void 제품을 생산하는 방법 (); // 와인을 판매하는 방법 public void sell ();}3.2 레드 와인 공장에서 진짜 와인 팩토리 실현
package com.demo.real.impl; import com.demo.real.iredwine;/** * Real Wine Production Factory * */@author */public class realredwinefactory empless iredwine {// @override public void product () {System.out.out.println ( "레드 와인 생산 레드 와인 생산 ..."); } // 와인을 판매하는 방법 public void sell () {System.out.println ( "레드 와인 공장 판매 레드 와인 ..."); }}3.3 적포도주 제작 -RedwineProxy
패키지 com.demo.proxy; import com.demo.real.iredwine;/** * Red Wine Agent * * @author */public class redwineproxy emplements iredwine {// Real Red Wine Manufacturer Private Iredwine Redwine; // 레드 와인 판매 에이전트 권한 개인 최종 부울 권한 = true; // 기본 구성 방법 public redwineproxy (iredwine redwine) {this.redwine = redwine; } // 레드 와인을 생산하는 에이전트 방법 (요원은 레드 와인을 생산하지 않고 실제 공장에서 와인을 판매하기 위해 와인을 가져옵니다) @override public void product () {// 대리인이 (this.permission)이라면 레드 와인이 될 권리가 있는지 여부를 결정합니다. System.out.println ( "에이전트는 주문을 받고 공장에 생산할 공장을 통지합니다 ..."); this.redwine.product (); } else {System.out.println ( "[이것은 불법 적포도주 요원입니다!]"); }} // 에이전트 @override public void sell () {if (this.permission) {this.redwine.sell (); System.out.println ( "에이전트는 공장에서 도매 레드 와인을 받고 더 높은 가격으로 판매하여 특정 차이를 얻습니다 ..."); } else {System.out.println ( "[이것은 불법 적포도주 요원입니다!]"); }}}3.4 와인 에이전트로 이동하여 레드 와인 클라이언트를 구입하십시오.
package com.demo; import com.demo.proxy.redwineproxy; import com.demo.real.iredwine; import com.demo.real.impl.realredwinefactory;/** * 메인 애플리케이션 * */public class {/** * @param args */public static void main (string []] iredwine realredwinefactory = 새로운 realredwinefactory (); // 프록시 객체 인스턴스 IREDWINE REDWINEPROXY = NEW REDWINEPROXY (RealRedWineFactory); // 에이전트는 레드 와인을 생산합니다 (실제로 실제 생산은 공장입니다) RedwineProxy.product (); // 에이전트는 레드 와인을 판매합니다 (도매 가격, 차이를 얻기 위해 더 높은 가격으로 판매) redwineproxy.sell (); }}4 실행 결과
[이것은 법적 적포도주입니다]
에이전트는 명령을 받았으며 공장에 생산하도록 통지했습니다.
레드 와인 공장은 레드 와인을 생산합니다 ...
레드 와인 공장은 레드 와인을 판매합니다 ...
에이전트는 공장에서 도매 레드 와인을 받고 더 높은 가격으로 판매하여 특정 가격 차이를 얻습니다 ...
III. 이 패턴의 디자인 원리
1 시스템 효율성을 향상시키기위한 지연 로딩
2 단일 책임 원칙
4. 행사를 사용하십시오
1 원격 프록시 : 다른 주소 공간의 객체에 대한 로컬 프록시를 제공합니다.
2 가상 에이전트 : 객체 생성이 시간이 많이 걸리면 프록시 객체를 통해 호출 할 수 있습니다. 실제 객체가 생성되기 전에 잘못된 호출이 반환됩니다. 실제 객체가 생성되면 실제 객체의 해당 메소드 호출이 클라이언트로 반환됩니다.
3 보호 에이전트는 원래 객체에 대한 액세스를 제어합니다.
4 스마트 가이드 라인은 간단한 포인터를 대체하여 객체에 액세스 할 때 추가 작업을 수행합니다.
V. 프록시 모드의 정적 클래스 다이어그램
초록 역할 : 실제 객체와 프록시 객체를 선언하는 일반적인 인터페이스.
실제 역할 : 실제로 요청을 처리하는 대상 객체.
에이전트 역할 : 프록시 객체 역할에는 실제 객체에 대한 참조가 포함되어 있으므로 프록시 객체는 요청을 실제 객체로 변환 할 수 있습니다. 동시에 프록시 객체는 실제 객체 작업을 수행하기 전후에 추가 작업을 추가 할 수 있습니다.
더 많은 Java 관련 컨텐츠를 보려면이 사이트에 관심이있는 독자는 "Java 데이터 구조 및 알고리즘 자습서", "Java Operation Dom Node Tips 요약", "Java 파일 및 디렉토리 작동 팁 요약 및"Java Cache Cache Operation Tips "의 주제를 볼 수 있습니다.
이 기사가 모든 사람의 Java 프로그래밍에 도움이되기를 바랍니다.