资讯专栏INFORMATION COLUMN

代理模式

Shihira / 1082人阅读

摘要:代理模式,看这名字就知道重点是代理。所谓代理,可以理解为中介或者中间人例如小明喜欢一个好看的菇凉但不好意思,找到朋友小蓝像好看菇凉送礼物。为了更好的解释这个,决定百度百科为其他对象提供一种代理以控制对这个对象的访问。

代理模式,看这名字就知道重点是代理。所谓代理,可以理解为中介或者中间人
例如:小明喜欢一个好看的菇凉但不好意思,找到朋友小蓝像好看菇凉送礼物。这个时候小蓝就是这个代理

使用代理模式 需要了解三个东西

抽象角色: 接口或者抽象类要什么真实角色实现的业务方法(送花送礼物)

代理角色:实现抽象角色,是真实角色的代理,可以实现真实角色的实现的抽象方法,从而形成代理

真实角色:实现抽象角色的方法或者功能,让代理角色实现这些功能

代码如下:

抽象角色
interface GiveGift {
   void Give();
   void GiveDolls();
   void GiveFlowers();
   void GiveChocolate();
}

代理角色
public class Proxy implements GiveGift {
   Pursuit pursuit = null;
   public Proxy(SchoolGirl mm){
       this.pursuit = new Pursuit(mm);
  }
   @Override
   public void Give() {
       pursuit.Give();
  }
   @Override
   public void GiveDolls() {
       pursuit.GiveDolls();
  }
   @Override
   public void GiveFlowers() {
       pursuit.GiveFlowers();
  }
   @Override
   public void GiveChocolate() {
       pursuit.GiveChocolate();
  }
}

真实角色
public class Pursuit implements GiveGift {
   SchoolGirl schoolGirl = null;
   public Pursuit( SchoolGirl schoolGirl ){
       this.schoolGirl = schoolGirl;
  }
   @Override
   public void Give() {
       System.out.println("喜欢的女孩-->"+schoolGirl.getName());
  }
   @Override
   public void GiveDolls() {
       System.out.println("送洋娃娃");
  }
   @Override
   public void GiveFlowers() {
       System.out.println("送你鲜花");
  }
   @Override
   public void GiveChocolate() {
       System.out.println("送你巧克力");
  }
}
这是一个好看的菇凉
public class SchoolGirl {
   private String name;
   public String getName() {
       return name;
  }
   public void setName(String name) {
       this.name = name;
  }
}
在main方法中实现
  SchoolGirl schoolGirl = new SchoolGirl();
       schoolGirl.setName("好看菇凉");
       Proxy proxy = new Proxy(schoolGirl);
       proxy.Give();
       proxy.GiveChocolate();
       proxy.GiveDolls();
       proxy.GiveFlowers();
好看菇凉在不知道小明的情况下就通过小蓝得到了小明的礼物。

为了更好的解释这个,决定百度百科
为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
优点
(1).职责清晰
真实的角色就是实现实际的业务逻辑,不用关心其他非本职责的事务,通过后期的代理完成一件完成事务,附带的结果就是编程简洁清晰。
(2).代理对象可以在客户端和目标对象之间起到中介的作用,这样起到了中介的作用和保护了目标对象的作用。
(3).高扩展性

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/70919.html

相关文章

  • 我的Java设计模式-代理模式

    摘要:下面总结了它俩的异同相同点都需要实现同一个接口或者继承同一个抽象类,并且代理角色和装饰角色都持有被代理角色和构件角色的引用。 写完上一篇之后有小伙伴问我有没有写过代理模式,想看看我的理解。原本我的设计模式系列是按照创建型-行为型-结构型的顺序写下去的,既然小伙伴诚心诚意了,我就大发慈悲的穿插一篇代理模式。开玩笑,题外话。 说起代理模式,就不由得想起经纪人,说起经纪人,就想起了...对,...

    BWrong 评论0 收藏0
  • 设计模式|代理模式

    摘要:三二模式分析代理模式的示意图结构比较简单一般可以简化如下图所示。五总结在代理模式中,要求给某一个对象提供一个代理,并由代理对象控制对原对象的访问,其英文为是一种结构型模式。 一、写在前面 代理模式是常用的结构型设计模式之一、当我们直接访问某些对象存在问题时可以通过代理模式来间接访问,为了保证客户端使用的透明性、所访问的真实对象和代理对象都必须实现同一个接口。 二、代理模式动机与定义 某...

    QiShare 评论0 收藏0
  • 代理模式和装饰者模式

    摘要:简介代理模式和装饰者模式是两种常见的设计模式。这里通过构造函数的参数将被代理对象传入到代理中,也可以通过其它方式,如提供一个方法。下面是的代码输出首先依然是先创建一个需要被代理的对象,然后把它传入到的构造函数中。 简介 代理模式和装饰者模式是两种常见的设计模式。代理模式是为其它对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以...

    NusterCache 评论0 收藏0
  • js设计模式 --- 代理设计模式

    摘要:代理设计模式代理模式为其他对象提供一种代理以控制对这个对象的访问。代理模式是常见的设计模式之一是指不直接调用实际的对象,而是通过代理对象,来间接的调用实际的对象。对象类定义了代理对象所代表的目标对象。 代理设计模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理模式是常见的设计模式之一,是指不直接调用实际的对象,而是通过代理对象,来间接的调用实际的对象。为什么要采用这种间...

    Tonny 评论0 收藏0
  • 深入理解代理模式

    摘要:代理模式代理类中创建一个真实对象的实例模式的核心装饰者强调的是增强自身,在被装饰之后你能够在被增强的类上使用增强后的功能。 代理模式 在详细了解代理模式之前,可能对于像小秋一样的小白,只知道一些很浅显的概念,或者就知道远程代理啊,静态代理啊,动态代理啊,这些看似可以望文生义的专业名词,但是如果我告诉你代理模式贯穿了我们生活的方方面面,就比如你现在刷着公众号的时候,实际上就用了远程代理模...

    testHs 评论0 收藏0

发表评论

0条评论

Shihira

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<