
package Proxy;
/*
* 项目名称:desginProject
* @author:wzc
* @date 创建时间:2017年9月3日 下午2:16:36
* @Description:抽象主题类
* @parameter
* */
public interface Subject {
//定义一个方法
public void method();
}
package Proxy;
/*
* 项目名称:desginProject
* @author:wzc
* @date 创建时间:2017年9月3日 下午2:18:13
* @Description:真实主题类
* @parameter
* */
public class realSubject implements Subject{
//实现方法
@Override
public void method() {
// TODO Auto-generated method stub
}
}
编写代理类:
package Proxy;
/*
* 项目名称:desginProject
* @author:wzc
* @date 创建时间:2017年9月3日 下午2:18:59
* @Description:代理类
* @parameter
* */
public class Proxy implements Subject{
//要代理那个实现类
private Subject subject=null;
public Proxy() {
super();
}
public Proxy(Subject subject) {
super();
this.subject = subject;
}
//实现方法
@Override
public void method() {
before();
subject.method(); //为代理者办事
after();
}
//前置处理
public void before(){
//doSomething
}
//后置处理
public void after(){
//doSomething
}
}
package Proxy;
/*
* 项目名称:desginProject
* @author:wzc
* @date 创建时间:2017年9月3日 下午2:16:36
* @Description:抽象主题类
* @parameter
* */
public interface people{
//定义拍武打的行为
public void actions();
//定义一个拍吻戏的行为
public void kiss();
}
package Proxy;
/*
* 项目名称:desginProject
* @author:wzc
* @date 创建时间:2017年9月3日 下午2:18:13
* @Description:真实主题类
* @parameter
* */
public class realStar implements people{
@Override
public void actions() {
System.out.println("拍动作戏----成功开拍");
}
@Override
public void kiss() {
System.out.println("拍吻戏-----成功开拍");
}
}
package Proxy;
/*
* 项目名称:desginProject
* @author:wzc
* @date 创建时间:2017年9月3日 下午2:18:59
* @Description:代理类
* @parameter
* */
public class Proxy implements people{
//要代理那个实现类
private people star=null;//代理类需要保留一个被代理者的应用,好知道执行谁的行为
public Proxy() {
super();
}
public Proxy(people star) {
super();
this.star = star;
}
//实现接口方法
@Override
public void actions() {
System.out.println("找替身拍武戏");
before();
star.actions(); //代替被替代者执行
after();
}
//实现接口方法
@Override
public void kiss() {
System.out.println("找替身拍吻戏");
before();
star.kiss(); //代替被替代者执行
after();
}
//前置处理
public void before(){
System.out.println("上场前,替身需要化妆");
}
//后置处理
public void after(){
System.out.println("上场后,替身需要卸妆");
}
}
测试一下
@Test
public void test() {
realStar star=new realStar();
Proxy proxy=new Proxy(star);
System.out.println("明星需要拍武戏");
proxy.actions();
System.out.println("明星需要拍吻戏");
proxy.kiss();
}

原文:http://www.cnblogs.com/Actexpler-S/p/7469607.html