设计模式之代理模式
简介
即Proxy Pattern,23种java常用设计模式之一。代理模式的定义:对其他对象提供一种代理以控制对这个对象的访问。 代理模式的主要作用是为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。 代理模式的思想是为了提供额外的处理或者不同的操作而在实际对象与调用者之间插入一个代理对象。这些额外的操作通常需要与实际对象进行通信。应用场合
为其他对象提供一种代理以控制对这个对象的直接访问,而访问代理对后,再由代理对象去访问真实对象。
例子需求:
小A 要追 mm ,要小B去送礼物。参考<<大话设计模式>> 中的代理模式。
在使用代理时,代理可以添加额外的方法。
小A 要追 mm ,要小B去送礼物。参考<<大话设计模式>> 中的代理模式。
在使用代理时,代理可以添加额外的方法。
Java 代码
package com.picc.cl;
/**定义公共接口*/
public interface GiveGift {
void giveFlowers(String boy);
}
/**真实对象实现接口*/
class Pursuit implements GiveGift{
private Girl girl;
public Pursuit(Girl girl){
this.girl=girl;
}
public void giveFlowers(String boy) {
System.out.println(boy +"送花给" +girl.getName());
}
public Girl getGirl() {
return girl;
}
public void setGirl(Girl girl) {
this.girl = girl;
}
}
class Girl{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
/**代理对象实现接口 并把真实对象作为成员变量*/
class Proxy implements GiveGift{
private Pursuit rursuit;
public Proxy(Girl girl){
rursuit = new Pursuit(girl);
}
public void giveFlowers(String boy) {
rursuit.giveFlowers(boy);
}
/**可以添加额外的方法*/
public void giveCar(String boy){
System.out.println(boy +"送车给"+rursuit.getGirl().getName());
}
}
package com.picc.cl; public class GiveGiftTest { public static void main(String[] args) { Girl girl = new Girl(); girl.setName("mm"); Proxy proxy = new Proxy(girl); proxy.giveFlowers("bor"); proxy.giveCar("boor"); } }
运行结果
bor送花给mm
boor送车给mm
boor送车给mm