栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA设计模式(八)——代理模式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA设计模式(八)——代理模式

下图为所有设计模式,带标记为重点掌握以及工作中常用到的:

  代理模式是属于结构型模式之一,其作用是为其他对象提供一种代理以控制对这个对象的访问。说到代理这个词语,大家可能就会觉得熟悉一些,我们熟知的代理有反向代理和正向代理等,只要理解到代理这个词语的含义,代理模式就可以很好的理解。

模式名称优点缺点应用场景
代理模式1、职责清晰。 2、高扩展性。 3、智能化。1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢。
2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂。
Spring容器中创建的对象、AOP

注意事项:
1、和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。
2、和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。

代理模式 1、创建一个金莲和王婆的接口类
public interface KindWoman {
  // 向男人抛媚眼
  void makeEyesWithMan();
  // 和男人开心的玩
  void happyWithMan();
}
2、创建潘金莲类
public class PangJinLian implements KindWoman {
  @Override
  public void makeEyesWithMan() {
    System.out.println("金莲抛媚眼。。。");
  }

  @Override
  public void happyWithMan() {
    System.out.println("金莲正在高兴的玩。。。");
  }
}
3、创建王婆代理类
public class WangPo implements KindWoman {

  private KindWoman kindWoman;

  public WangPo() {
    // 默认作为金莲的代理
    kindWoman = new PangJinLian();
  }

  // 也可以作为其它女人的代理类
  public WangPo(KindWoman kindWoman) {
    this.kindWoman = kindWoman;
  }

  @Override
  public void makeEyesWithMan() {
    // 年纪大了,没人看她抛媚眼,让年轻的抛
    this.kindWoman.makeEyesWithMan();
  }

  @Override
  public void happyWithMan() {
    // 自己老了,干不了了,让年轻的代替
    this.kindWoman.happyWithMan();
  }
}
4、创建西门庆类进行勾搭
public class XimenQing {

  public static void main(String[] args) {
    // 把王婆叫出来
    WangPo wangPo = new WangPo();
    // 西门庆和金莲抛媚眼
    wangPo.makeEyesWithMan();
    // 西门庆和金莲做开心的事情
    wangPo.happyWithMan();
  }
}
5、测试结果

小结

  根据上面的例子,大家可能稍微对代理模式有点点理解了吧。说白了就是西门庆想勾搭金莲,但是金莲不好意思回复西门庆,于是找王婆帮忙作为代理。王婆只是个中间人,实际底层做事情的还是金莲,王婆不仅仅可以做金莲的代理还可以做像金莲这类似的女人的代理类。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/711936.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号