Proxy
Proxy
莫问viva 发表于4年前
Proxy
  • 发表于 4年前
  • 阅读 49
  • 收藏 2
  • 点赞 0
  • 评论 0

华为云·免费上云实践>>>   

摘要: 代理模式:为其他对象提供一种代理以控制对这个对象的访问


       所谓代理,是指具有与代理元(被代理的对象)具有相同的接口的类,客户端必须通过代理与被代理的目标类交互,而代理一般在交互的过程中(交互前后),进行某些特别的处理。        Proxy模式是很常见的模式,在我们生活中处处可见,例如我们买火车票不一定非要到火车站去买,可以到一些火车票的代售点去买。寄信不一定是自己去寄,可以把信委托给邮局,由邮局把信送到目的地。

代理模式涉及到的三个要点:

1,抽象行为

2,真实角色

3,代理角色


下面我们以寄信为例:

小红是公司一名文员,经常负责公司邮件的收发。公司领导一般有信件发送的时候只需要直接将信件交给小红,然后由小红去找邮局发送就可以了。

分析:在这样一个情景中   抽象行为是发信; 真实角色是邮局; 代理角色是公司文员     

1,抽象行为:  发信

public interface ISend {

public void send(Object message);

}


2,真实角色:邮局发信

public class PostOffice implements ISend {
public void send(Object message) {
System.out.println("邮局寄信...");
}
}

3,代理角色:公司文员

public class Employee implements ISend {

private ISend post;

public void setISend(ISend send){
this.post = send;
}

public void send(Object message) {
if(post == null)
post = new PostOffice();
System.out.println("将信件投递到邮局...");
post.send(message);
}
}

4,老板要发信,让小红代理去办

public class Main {

public static void main(String args[]){
//公司有一文员 小红 (代理对象)
 Employee xiaoHong = new Employee();
 
 //选择一个邮局(真实对象)
 PostOffice post = new PostOffice();
 //小红把信件交给邮局
 xiaoHong.setISend(post);
 
 //老板让小红代理发信
 xiaoHong.send(null);
}
}

输出结果:

将信件投递到邮局...
邮局寄信...





 

共有 人打赏支持
粉丝 39
博文 129
码字总数 106697
×
莫问viva
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: