package com.proxy;
/**
* 真实主题
* @author PROEM
*
*/
public class RealSubject extends Subject {
public void request() {
System.out.println("实现请求!");
}
}
package com.proxy;
/**
* 代理主题
* @author PROEM
*
*/
public class ProxySubject extends Subject {
private RealSubject realSubject;
@Override
/**
* 通过代理主题可以对真实主题的引用,并且在引用的同时加入自己的方法
*/
public void request() {
//之前加入自己的方法
preRequest();
//进行实例化成员变量
if(realSubject==null){
realSubject = new RealSubject();
}
//方法的高用
realSubject.request();
postRequest();
}
/**
* 请求前的操作
*/
public void preRequest(){
System.out.println("请求前的操作!");
}
/**
* 请求后的操作
*/
public void postRequest(){
System.out.println("请求后的操作!");
}
}
package com.proxy;
/**
* 测试类
* @author PROEM
*
*/
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
//实例化代理主题的引用
Subject subject = new ProxySubject();
//调用
subject.request();
}
}