设计模式--代理模式
来源:互联网 发布:旋风十一人网络更新 编辑:程序博客网 时间:2024/06/07 13:07
代理模式的英文原文是:Provide a surrogate or placeholder for another object to control access to it. 意思是:为其他对象提供一种代理,以控制对这个对象的访问。
有以下三种角色:
1、抽象主题:是真实主题和代理主题的接口,代理主题要实现这个抽象主题,这样就可以使用代理主题代理真实主题。
2、真实主题:业务逻辑具体执行者,被代理的对象。
3、代理主题:该角色有真实主题的引用,可以在真实主题的操作前后增加操作。
代理模式的类图:
各个类对应的代码:
抽象主题:
package com.zz.proxy;/** * 抽象主题 * Copyright 2015年4月14日 * created by txxs * all right reserved */public interface Subject {//定义一个请求public void request();}
真实主题:
package com.zz.proxy;/** * 真实主题 * Copyright 2015年4月14日 * created by txxs * all right reserved */public class RealSubject implements Subject {public void request() {//业务逻辑处理}}
代理主题:
package com.zz.proxy;/** * 代理主题 * Copyright 2015年4月14日 * created by txxs * all right reserved */public class ProxySubject implements Subject {private Subject subject;public ProxySubject(Subject subject){this.subject = subject;}//在原方法的基础上增加方法@Overridepublic void request() {this.beforeRequest();subject.request();this.afterRequest();}//请求前的操作private void beforeRequest(){//预处理}//请求后的操作private void afterRequest(){//处理结束}}
代理模式的优点:
1、职责清晰:真实角色可以只实现实际的业务逻辑,不用实现非本职的业务,通过代理来实现后续业务的添加,是编程逻辑清晰。
2、高扩展性:真实角色是要实现了公共的接口,代理对象就可以代理真实角色。
3、灵活:代理类可以在运行时才确定代理的真实角色。
通过一个实例来应用代理模式———房屋出租。拥有房源的用户进行房屋出租,其有两个方法一个是goBargain()方法用来商议价格,另一个方法是houseRental()方法是定价完成后进行出租。拥有房源的用户实现了房屋出租的接口,这里有一个房屋出租中介,这个中介同样实现了房屋出租的接口。这个中介就可以代理这些房屋。源码下载
实现效果:
0 1
- 设计模式--【代理模式】
- 设计模式:代理模式
- 设计模式--代理模式
- 设计模式---代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式 代理模式
- 设计模式-【代理模式】
- 设计模式-代理模式
- 设计模式----代理模式
- 设计模式-代理模式
- 设计模式---代理模式
- 设计模式--代理模式
- 设计模式-代理模式
- 设计模式- 代理模式
- 设计模式---代理模式
- 设计模式 - 代理模式
- 【设计模式】代理模式
- Yii CDbCriteria的常用方法
- CentOS 6.3下rsync服务器的安装与配置
- HDMI 图眼
- 车牌识别C语言源码 第一版
- 深入Java虚拟机笔记--体系结构及其堆,栈,方法区
- 设计模式--代理模式
- MFC中BOOL和bool的区别大不大
- http keep-Alive
- ASP.NET安全[开发ASP.NET MVC应用程序时值得注意的安全问题](转)
- 多态性
- Yii CDbCriteria 条件查询 常用用法
- mysql笔记一(创建库、存储引擎、数据类型)
- 解决Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future:
- Javascript中数组的常用方法