Fork me on GitHub

代理(Proxy)模式简介

一、代理(Proxy)模式简介

代理模式是结构型模式。

代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。

代理对象要继承于抽象主题,并控制原对象的引用

二、简单例子

抽象主题类

package proxy;
/*
 * 抽象主题
 */
public abstract class Subject {
/*
 * 请求方法
 */
    abstract public void Request();
}

真实主题类,继承抽象

package proxy;
/*
 * 真实主题
 */
public class RealSubject extends Subject {

    @Override
    public void Request() {
        System.out.println("真实主题实现请求!");

    }

}

代理主题

package proxy;
/*
 * 代理主题
 */
public class ProxySubject extends Subject {
    private RealSubject realSubject;
    @Override
    public void Request() {
        //请求前代理主题自己的操作
        preRequest();
        //判断是否为空
        if(realSubject==null){
            //实例化
            realSubject=new RealSubject();
        }
        //调用真实主题的响应方法
        realSubject.Request();
        //请求后代理主题自己的操作
        postRequest();
    }
    private void preRequest(){
        System.out.println("请求前代理主题自己的操作!");
    }
    
    private void postRequest(){
        System.out.println("请求后代理主题自己的操作!");
    }

}

测试类

package proxy;
/*
 * 代理主题测试类
 */
public class Test {

    public static void main(String[] args) {
        //声明抽象主题,并实例化为代理主题
        Subject subject=new ProxySubject();
        //调用代理主题的响应方法
        subject.Request();

    }

}

结果:

请求前代理主题自己的操作!
真实主题实现请求!
请求后代理主题自己的操作!

 

posted @ 2015-03-21 00:55  森林森  阅读(450)  评论(0编辑  收藏  举报