摘要:代理模式,看这名字就知道重点是代理。所谓代理,可以理解为中介或者中间人例如小明喜欢一个好看的菇凉但不好意思,找到朋友小蓝像好看菇凉送礼物。为了更好的解释这个,决定百度百科为其他对象提供一种代理以控制对这个对象的访问。
代理模式,看这名字就知道重点是代理。所谓代理,可以理解为中介或者中间人
例如:小明喜欢一个好看的菇凉但不好意思,找到朋友小蓝像好看菇凉送礼物。这个时候小蓝就是这个代理
使用代理模式 需要了解三个东西
抽象角色: 接口或者抽象类要什么真实角色实现的业务方法(送花送礼物)
代理角色:实现抽象角色,是真实角色的代理,可以实现真实角色的实现的抽象方法,从而形成代理
真实角色:实现抽象角色的方法或者功能,让代理角色实现这些功能
代码如下:
抽象角色
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
摘要:下面总结了它俩的异同相同点都需要实现同一个接口或者继承同一个抽象类,并且代理角色和装饰角色都持有被代理角色和构件角色的引用。 写完上一篇之后有小伙伴问我有没有写过代理模式,想看看我的理解。原本我的设计模式系列是按照创建型-行为型-结构型的顺序写下去的,既然小伙伴诚心诚意了,我就大发慈悲的穿插一篇代理模式。开玩笑,题外话。 说起代理模式,就不由得想起经纪人,说起经纪人,就想起了...对,...
摘要:简介代理模式和装饰者模式是两种常见的设计模式。这里通过构造函数的参数将被代理对象传入到代理中,也可以通过其它方式,如提供一个方法。下面是的代码输出首先依然是先创建一个需要被代理的对象,然后把它传入到的构造函数中。 简介 代理模式和装饰者模式是两种常见的设计模式。代理模式是为其它对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以...
摘要:代理设计模式代理模式为其他对象提供一种代理以控制对这个对象的访问。代理模式是常见的设计模式之一是指不直接调用实际的对象,而是通过代理对象,来间接的调用实际的对象。对象类定义了代理对象所代表的目标对象。 代理设计模式 代理模式:为其他对象提供一种代理以控制对这个对象的访问。代理模式是常见的设计模式之一,是指不直接调用实际的对象,而是通过代理对象,来间接的调用实际的对象。为什么要采用这种间...
阅读 926·2023-04-26 01:34
阅读 3360·2023-04-25 20:58
阅读 3273·2021-11-08 13:22
阅读 2110·2019-08-30 14:17
阅读 2524·2019-08-29 15:27
阅读 2675·2019-08-29 12:45
阅读 2997·2019-08-29 12:26
阅读 2811·2019-08-28 17:51