代理模式
代理模式又叫委托模式,是为某个对象提供一个代理对象,并且由代理对象控制对原对象的访问。通俗来讲,代理模式就是我们生活中常见的中介。
小洪的故事
出场人物:小洪、小洪的女朋友
静态代理
“等了好久终于等到今天,盼了好久终于把梦实现。”蓝牙音箱中无限循环着这首歌。对于小洪来说,今天注定是不平凡的一天。
“我要结婚了!”小洪将头发梳成大人模样,再穿上一身帅气西装,想象着自己有多帅。
就在这时,沉浸在幻想中的小洪猛地从幻想中冷静回来:“啊,这个婚礼如何举办啊?场地布置、婚礼的策划、灯光等。这些我都不会弄啊。这可怎么办?”
这时,小洪想起老师曾叮嘱过的代理模式。
“对啊,我只需要找到一个代理——婚庆公司,就可以帮我实现人生大事了!”,小洪脑海里浮现了代理模式的模样。
首先要确认一下结婚的接口
public interface Marry {
// 场地布置
void place();
// 策划
void marryPlan();
// 灯光
void light();
}
小洪的婚姻要实现这个接口
public class MyMarry implements Marry {
@Override
public void place() {
System.out.println("婚礼地点:基督大教堂");
}
@Override
public void marryPlan() {
System.out.println("结婚方案:A");
}
@Override
public void light() {
System.out.println("灯光:绚丽多彩的灯光");
}
}
找了半天,小洪终于找到了一家适合自己的婚庆公司。
婚庆公司的类如下
public class MarryCompany implements Marry {
private Marry marry = null;
public MarryCompany(Marry marry) {
this.marry = marry;
}
@Override
public void place() {
this.marry.place();
}
@Override
public void marryPlan() {
this.marry.marryPlan();
}
@Override
public void light() {
this.marry.light();
}
public void doMarry() {
this.place();
this.marryPlan();
this.light();
}
}
客户端调用
public class Me {
public static void main(String[] args) {
Marry marry = new MyMarry();
MarryCompany marryCompany = new MarryCompany(marry);
marryCompany.doMarry();
}
}
包办完这些,小洪终于能够如愿以偿地踏入这个神圣的殿堂,只见一袭白裙、头戴白纱巾的新娘子站在殿堂上。小洪笑着走了过去。
笑是没问题,可这一笑却把小洪笑醒了。
醒来的小洪看着宿舍熟悉而又陌生的场景,不由得大吼一声:“我怎么还没有女朋友啊!”