java设计模式之一---代理模式_DAY DAY UP_百度空间
我一直觉得代理模式和策略模式很像,{wy}不同就是,策略模式中的封装类和它中的实现类没有实现同一个接口。而代理模式中的代理类要知道被代理类都做什么,所以代理类也需要实现和被代理类一样的接口。
下面看一下代理模式:

一. 代理模式:

代理模式就是给某一个对象提供一个代理对象,并由代理对象控制对源对象的引用。就是一个人或者一个机构代替另一个人或者另一个机构去采取一些行动。

二. 代理模式所涉及到的角色:

抽象角色:提供一种真实角色和代理角色所共有的接口

真实角色:定义了代理角色要代理的真实对象

代理角色:含有对真实角色的引用,和真实对象一样,要实现同一个接口。通常在客户端调用时代理对象都要在真实角色对象的基础上增加一些真实角色所不能胜任的工作,而不只是简单的含有真实角色的引用

一个的例子:

1.抽象角色:提供一种真实角色和代理角色所 共有的接口


public interface KindWomen {
//这种类型的女人能做什么事情呢?
public void makeEyesWithMan();     //抛媚眼
public void happy();       
}


2.真实角色:定义了代理角色要代 理的真实对象

public class PanJinLian implements KindWomen {
public void happy() {
System.out.println("潘金莲在happy");
}
public void makeEyesWithMan() {
System.out.println("潘金莲抛媚眼");
}
}


3.代理角色

public class WangPo implements KindWomen {
private KindWomen kindWomen;
public WangPo(){
this.kindWomen = new PanJinLian(); //默认的话,是潘金莲的代理
}

public WangPo(KindWomen kindWomen){
this.kindWomen = kindWomen;
}
public void happy() {
this.kindWomen.happy();
}
public void makeEyesWithMan() {
this.kindWomen.makeEyesWithMan(); //王婆这么大年龄了,谁看她抛媚眼?!
}
}

4.客户端代码:

public class XiMenQing {

public static void main(String[] args) {

WangPo wangPo = new WangPo();

wangPo.makeEyesWithMan();
wangPo.happy(); }
}

代理模式主要使用了Java 的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。


郑重声明:资讯 【java设计模式之一---代理模式_DAY DAY UP_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——