publicinterface GiveGift {
void giveDolls();
void giveFlowers();
void giveChocolate();
}
publicclass SchoolGirl {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
publicclass Suitor implements GiveGift{
private SchoolGirl mm;
public Suitor(SchoolGirl mm) {
this.mm = mm;
}
public void giveDolls() {
System.out.println("Suitor givesdolls to " + mm.getName());
}
publicclass Proxy implements GiveGift {
private Suitor gg;
public Proxy(SchoolGirl mm) {
this.gg = new Suitor(mm);
}
public void giveDolls() {
gg.giveDolls();
}
public void giveFlowers() {
gg.giveFlowers();
}
public void giveChocolate() {
gg.giveChocolate();
}
}
/**
* A suitor gives gifts to a school girl by aproxy.
*/
publicclass ProxyClient {
public static void main (String[] args) {
SchoolGirl schoolGirl = newSchoolGirl();
schoolGirl.setName("Mary");
Proxy proxy = new Proxy(schoolGirl);
proxy.giveChocolate();
proxy.giveDolls();
proxy.giveFlowers();
}
}
public void giveFlowers() {
System.out.println("Suitor givesflowers to " + mm.getName());
}
public void giveChocolate() {
System.out.println("Suitor giveschocolate to " + mm.getName());
}
}