gg想追求mm,gg送礼物给mm,通过代理将礼物送给mm,mm并不知道gg是谁,但是却能通过代理接收gg送来的礼物
设计接口,gg和代理类都需要实现的方法
package designpattern.proxy;
//追求这和代理类都需要实现的方法
public interface IGiveGift {
public void giveDolls();
public void giveFlowers();
public void giveChocolate();
}
gg类的实现
package designpattern.proxy;
public class Pursuit implements IGiveGift {
private SchoolGirl mm;
public Pursuit(SchoolGirl mm){
this.mm = mm;
}
@Override
public void giveDolls() {
// TODO Auto-generated method stub
System.out.println(mm.getName() + "送你洋娃娃");
}
@Override
public void giveFlowers() {
// TODO Auto-generated method stub
System.out.println(mm.getName() + "送你玫瑰花");
}
@Override
public void giveChocolate() {
// TODO Auto-generated method stub
System.out.println(mm.getName() + "送你巧克力");
}
}
代理类的实现
package designpattern.proxy;
public class Proxy implements IGiveGift {
private Pursuit gg;
public Proxy(SchoolGirl mm){
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();
}
@Override
public void giveChocolate() {
// TODO Auto-generated method stub
gg.giveChocolate();
}
}
mm类的实现
package designpattern.proxy;
public class SchoolGirl {
private String name;
private int age;
public SchoolGirl(String name,int age){
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
客户端实现
package designpattern.proxy;
public class proxyClient {
public static void main(String[] args) {
// TODO Auto-generated method stub
SchoolGirl mm = new SchoolGirl("李娇娇", 26);
Proxy daili = new Proxy(mm);
daili.giveDolls();
daili.giveFlowers();
daili.giveChocolate();
}
}
概括:
- gg类里面存放mm类的信息
- 代理类里面存放gg类的信息,并调用gg类的方法
- gg类和代理类实现相同的方法,比如送花,送巧克力,送洋娃娃
输出:
结构图: