1、定义公共接口,这些接口表示所有请求行为;
2、定义请求者,继承公共接口,包含准备执行者对象;
3、定义代理(proxy),继承公共接口,包含请求者对象,传入被请求者对象;
4、调用请求行为;
5、竹类中由代理来调用对应请求行为
在《大话设计模式》中以追求女生为例,现将自己改造的Java代码显示如下:
//被请求者
public class SchoolGirl {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
//公共接口
public interface IGiveGift {
void GiveDolls();
void GiveFlowers();
}
//追求者
public class Pursuit implements IGiveGift {
SchoolGirl mm;
public Pursuit(SchoolGirl mm){
this.mm = mm;
}
@Override
public void GiveDolls() {
// TODO Auto-generated method stub
System.out.println(this.mm.getName()+"送你玩偶");
}
@Override
public void GiveFlowers() {
// TODO Auto-generated method stub
System.out.println(this.mm.getName()+"送你花");
}
}
//代理
public class Proxy implements IGiveGift {
Pursuit gg;
public Proxy(SchoolGirl mm){
this.gg =new Pursuit(mm);
}
@Override
public void GiveDolls() {
// TODO Auto-generated method stub
gg.GiveDolls();
}
@Override
public void GiveFlowers() {
// TODO Auto-generated method stub
gg.GiveFlowers();
}
}
//主类
public static void main(String[] args) {
SchoolGirl schoolGirl = new SchoolGirl();
schoolGirl.setName("李娇娇");
Proxy proxy =new Proxy(schoolGirl);
proxy.GiveFlowers();
proxy.GiveDolls();
/*Pursuit pursuit = new Pursuit(schoolGirl);
pursuit.GiveDolls();
pursuit.GiveFlowers();*/
}