大话设计模式-***模式的应用举例
该例子是大话设计模式课本上的举例,男孩通过一个***去追求心目中的女神,对于理解***模式很有帮助。
/**
* 被追求者 女神
*/
public class Girl {
//名字
private String name;
public Girl() {
}
public Girl(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**
* 送礼物接口
* ***和追求者都要实现该接口
*/
public interface IGiveGift {
/**
* 送的三种礼物
*/
void giveDolls();
void giveFlowers();
void giveChocolate();
}
/**
* 真实的追求者
*/
public class Pursuit implements IGiveGift {
//被追的女孩
private Girl girl;
public Pursuit() {
}
public Pursuit(Girl girl) {
this.girl = girl;
}
@Override
public void giveDolls() {
System.out.println(girl.getName() + " 送你洋娃娃");
}
@Override
public void giveFlowers() {
System.out.println(girl.getName() + " 送你鲜花");
}
@Override
public void giveChocolate() {
System.out.println(girl.getName() + " 送你巧克力");
}
}
/**
* 追求者请的*** 代替自己追求女神
*/
public class Proxy implements IGiveGift {
//真实追求者
private Pursuit pursuit;
/**
* 从构造方法开始 全都是直接调用的真实追求者的方法
* ***只是一个*** 没有自己的操作 只是帮别人完成任务
*
* @param girl
*/
public Proxy(Girl girl) {
pursuit = new Pursuit(girl);
}
@Override
public void giveDolls() {
pursuit.giveDolls();
}
@Override
public void giveFlowers() {
pursuit.giveFlowers();
}
@Override
public void giveChocolate() {
pursuit.giveChocolate();
}
}
public class Main {
public static void main(String[] args) {
//被追求者
Girl girl = new Girl("女神");
//***
Proxy proxy = new Proxy(girl);
//***帮真实追求者 追求女孩
proxy.giveDolls();
proxy.giveFlowers();
proxy.giveChocolate();
}
}
运行结果:
女神 送你洋娃娃
女神 送你鲜花
女神 送你巧克力