文档章节

Proxy

莫问viva
 莫问viva
发布于 2014/03/11 09:25
字数 485
阅读 58
收藏 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);
}
}

输出结果:

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





 

© 著作权归作者所有

共有 人打赏支持
莫问viva
粉丝 37
博文 134
码字总数 114035
作品 0
长沙
高级程序员
mysql的主从复制(二)mysql-proxy实现读写分离

安装前准备(三台虚拟机): 主机1: 172.16.24.77 安装msyql服务器端 mysql-proxy 主机2: 172.16.24.88 安装mysql服务器端(mysql主) 主机3: 172.16.24.99 安装mysql服务器端(mysql从) ...

上一段旅程
2014/05/01
0
0
Nginx接收PROXY协议

1 介绍 PROXY协议使Nginx接收客户端连接信息通过代理服务器和负载均衡器传入,例如HAproxy和亚马逊Elastic负载均衡器(SLB)。 通过PROXY协议传入的是客户端IP地址,代理服务器IP地址和端口号...

Leech
2016/08/08
103
0
linux mysql proxy 的安装,配置,以及读写分离

linux mysql proxy 的安装,配置,以及读写分离 张映 发表于 2010-03-03 分类目录: mysql 一,mysql proxy是什么,干什么用的 MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy...

daniel-john
2014/07/07
0
0
MariaDB Proxy读写分离的实现

MariaDB Proxy读写分离的实现 1.创建用于存储数据目录lvm设备 安装mysql-proxy-0.8.3 为mysql-proxy提供SysV服务脚本,内容如下所示 # vim /etc/rc.d/init.d/mysql-proxy #!/bin/bash # # m...

文丑非良将
2014/04/17
0
0
MySQL Proxy 读写分离(实战总结)

规划: 主mysql服务器:192.168.1.21 从mysql服务器: 192.168.1.22 mysql读写分离器:192.168.1.23 1、读写分离服务器上解压安装包,并添加对应用户,并编辑启动脚本; # tar xf mysql-pro...

阿遥在发呆
2017/05/12
0
0
Apache加载proxy、proxy_ajp、proxy_balancer

由于某些原因,apache的一些模块在最初安装时未能包含进去,在之后又不能重新安装apache,这时就需要在不重新编译apache的情况下新增编译模块,可采用以下方法,举例说明: 我的apache之前忘...

技术小胖子
2017/11/09
0
0
mysql 5.7+mysql-proxy 0.8.5 读写分离

主从环境: 操作系统:CentOS6.5_x64 主服务器Master:192.168.0.103 从服务器Slave:192.168.0.105 调度服务器MySQL-Proxy:192.168.0.104 一、mysql主从复制 这里就省略了,请参考 http:/...

dml124
01/14
0
0
nginx 配置atcion,和验证码

验证码部分: location ~* ^.+(authImgServlet) { root /aa/bb/cc/dd/; index index.htm index.jsp login.jsp; proxy_store off; proxysetheader X-Real-IP $remote_addr; proxysetheader Ho......

枫爱若雪
2012/09/21
0
0
httpd代理服务器和缓存的讲解

Apache从1.2版本开始,代理模块就已经加入到Apache源代码中,可惜当时的代理模块有很多问题,例如,与较新的http规范不兼容,没有人来维护它,甚至还不能从服务器中删除它等。从Apache2.0版本...

灵魂自由的忙人
2017/11/22
0
0
使用nginx+lua实现web项目的灰度发布

1.问题:小团队,快速迭代开发,版本发布没有经过测试就要放出去,怎样在内网测试过后在外网能在真实环境让内部人员再过一次测试且不影响外网用户 2.实现思想: a.至少要有两台机器 b.公司是...

闪电
2015/08/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
14分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
17分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
18分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
23分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
25分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
27分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
28分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
30分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
33分钟前
0
0
mac常用软件

1.excel for mac http://www.pc6.com/mac/114205.html

小黑202
33分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部