>  기사  >  Java  >  Java 디자인 패턴에서 프록시 패턴을 구현하는 방법

Java 디자인 패턴에서 프록시 패턴을 구현하는 방법

王林
王林앞으로
2023-05-13 18:34:06874검색

프록시 패턴이란 무엇인가요?

프록시 패턴 정의: 어떤 이유로 객체에 대한 액세스를 제어하려면 객체에 프록시를 제공해야 합니다. 이때, 접근 객체는 적합하지 않거나 대상 객체를 직접 참조할 수 없으며, 프록시 객체는 접근 객체와 대상 객체 사이의 중개자 역할을 합니다.

장점

1. 프록시 모드는 클라이언트와 대상 개체 사이의 중개 역할을 하며 대상 개체를 보호합니다.

2 프록시 모드는 대상 개체의 기능을 확장할 수 있습니다. 클라이언트와 대상 개체의 분리로 인해 시스템의 결합이 어느 정도 줄어들고 프로그램의 확장성이 높아질 수 있습니다

단점

1. 프록시 모드를 사용하면 시스템 설계 시 클래스 수가 늘어납니다

2 . 클라이언트에서 대상 개체와 대상 개체 사이에 프록시 개체를 추가하면 요청 처리 속도가 느려집니다.

지식 포인트

프록시 모드의 구조는 다음과 같습니다. 주로 상속된 추상 테마를 정의함으로써 상대적으로 간단합니다. 에이전트에는 실제 주제에 대한 액세스를 달성하기 위한 실제 주제가 포함되어 있습니다. 기본 구조와 구현 방법을 분석해 보겠습니다.

프록시 모드 구현

사례: 다벤다이 대모가 와인을 판다

추상과목(주제) 수업: 와인을 판매

실제과목(실제과목) 수업: 대모의 선술집

프록시(Proxy) 수업: 빅벤의 와인 가판대

벤은 와인을 팔기 위해 대모의 선술집 앞에 노점을 차리러 왔습니다.

Selling wine

A Wine-Selling 인터페이스는 와인을 판매하는 추상적인 메소드를 선언합니다

public interface Jiu {
    void show();
}

My Godmother's Tavern

My Godmother's Tavern 클래스는 와인을 판매하는 인터페이스를 구현하고, 와인을 판매하는 show() 메소드를 구현합니다. 이름이 선언되고 aa() 메소드는 Da Ben이 매점을 설정하도록 유도합니다

public class GanNiang implements Jiu {
    private String name;
    GanNiang() {
    }
    GanNiang(String name) {
        this.name = name;
        aa();
    }
    @Override
    public void show() {
        System.out.printf("卖出一坛%s", name);
    }
    public void aa() {
        System.out.println("大奔来摆摊了");
    }
}

Da Ben의 와인 매점

Da Ben의 와인 매점 클래스는 와인 판매 인터페이스를 구현하고 와인과 대모의 이름을 선언합니다. 선술집의 모습과 와인을 판매하는 방법이 구현됩니다.

public class DaBen implements Jiu {
    private String name;
    private GanNiang ganNiang;
    DaBen() {
    }
    DaBen(String name) {
        this.name = name;
    }
    @Override
    public void show() {
        if (ganNiang == null) {
            ganNiang = new GanNiang(name);
        }
        ganNiang.show();
    }
}

Test

new 대형 와인 가판대에서 show() 메소드를 두 번 호출하는 것은 와인을 두 번 판매하는 것과 같습니다.

public class Demo {
    public static void main(String[] args) {
        DaBen daBen = new DaBen("女儿红");
        daBen.show();
        System.out.println();
        System.out.println();
        daBen.show();
    }
}

여기에서 첫 번째 와인 판매와 두 번째 와인 판매의 출력 결과가 다르다는 것을 알 수 있습니다. 왜냐하면 와인을 팔 때마다 와인을 얻으려면 대모의 선술집에 가야 하기 때문입니다. . 다벤이 처음으로 와인을 사러 왔을 때, 그는 대모에게 내가 노점을 차리러 왔다고 알렸고, 나중에 대모는 다벤이 온다는 것을 이미 알고 있었기 때문에 그가 도착했을 때 그에게 알릴 필요가 없었다. 또 와인.

위 내용은 Java 디자인 패턴에서 프록시 패턴을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 yisu.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제