プロキシモード

8003 ワード

プロキシサーバ


エージェントとは、サーバ側でもよく使用されるが、エージェントとスポークスマンを表す意味は、何かに代わるものである.
具体的には,エージェントモードは,機能を定義する構想オブジェクトではなくインタフェースを用い,エージェントオブジェクトによってメソッドを呼び出し,戻り値を受け入れるかどうか分からない場合に処理する.

操作例


上場する
import java.util.*;

interface Image {
    public void displayImage();
}

//on System A
class RealImage implements Image {
    private String filename;
    public RealImage(String filename) {
        this.filename = filename;
        loadImageFromDisk();
    }

    private void loadImageFromDisk() {
        System.out.println("Loading   " + filename);
    }

    @Override
    public void displayImage() {
        System.out.println("Displaying " + filename);
    }
}

//on System B
class ProxyImage implements Image {
    private String filename;
    private Image image;

    public ProxyImage(String filename) {
        this.filename = filename;
    }

    @Override
    public void displayImage() {
        if (image == null)
           image = new RealImage(filename);

        image.displayImage();
    }
}

class ProxyExample {
    public static void main(String[] args) {
        Image image1 = new ProxyImage("HiRes_10MB_Photo1");
        Image image2 = new ProxyImage("HiRes_10MB_Photo2");

        image1.displayImage(); // loading necessary
        image2.displayImage(); // loading necessary
    }
}
クライアントがDoAction()メソッドを要求する場合、これは、エージェントが戻り値を受信、処理、取得し、クライアントに渡す方法である.
これにより、クライアントは結果のみを受け取り、OCP、DIPの設計原則に合致するオブジェクト向けの設計を完了します.