代理(Proxy)模式简介
一、代理(Proxy)模式简介
代理模式是结构型模式。
代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。
代理对象要继承于抽象主题,并控制原对象的引用
二、简单例子
抽象主题类
package proxy;
/*
* 抽象主题
*/
public abstract class Subject {
/*
* 请求方法
*/
abstract public void Request();
}
真实主题类,继承抽象
package proxy;
/*
* 真实主题
*/
public class RealSubject extends Subject { @Override
public void Request() {
System.out.println("真实主题实现请求!"); } }
代理主题
package proxy;
/*
* 代理主题
*/
public class ProxySubject extends Subject {
private RealSubject realSubject;
@Override
public void Request() {
//请求前代理主题自己的操作
preRequest();
//判断是否为空
if(realSubject==null){
//实例化
realSubject=new RealSubject();
}
//调用真实主题的响应方法
realSubject.Request();
//请求后代理主题自己的操作
postRequest();
}
private void preRequest(){
System.out.println("请求前代理主题自己的操作!");
} private void postRequest(){
System.out.println("请求后代理主题自己的操作!");
} }
测试类
package proxy;
/*
* 代理主题测试类
*/
public class Test { public static void main(String[] args) {
//声明抽象主题,并实例化为代理主题
Subject subject=new ProxySubject();
//调用代理主题的响应方法
subject.Request(); } }
结果:
请求前代理主题自己的操作!
真实主题实现请求!
请求后代理主题自己的操作!
代理(Proxy)模式简介的更多相关文章
- 代理(Proxy)模式简介
Proxy 模式简介 代理模式的两个应用: 打开文档时加载大图片 例如:如果有个对象是一张很大的图片,而这张图片需要花费很长时间才能显示出来,那么当这个图片包含在文档中的后面时,使用编辑器或浏览器打开 ...
- 设计模式--代理(Proxy)模式
在公司,经常性听到采购部的人说采购某样东材料,采购不了,需要通过代理商才可以.以前Insus.NET也做有一个练习<找人办事,代理设计模式(Proxy)>http://www.cnblog ...
- 代理(Proxy)模式
代理模式的类图如下所示: 客户端想调用的是RealSubject,由于某种考虑或原因,只能直接访问到ProxySubject,再由ProxySubject去调用RealSubject,这就完成了一次代 ...
- 行为模式--代理Proxy模式(Java)
代理(AOP切面的雏形): 题记:顾名思义就是将某件事,某个东西的使用权进行为让授权转移.代理相当于中介(不同于中介者模式),在原本操作的类之间添加了一个桥梁.但代理不能去修改原有目标.比如:一个人要 ...
- Android与设计模式——代理(Proxy)模式
在阎宏博士的<JAVA与模式>一书中开头是这样描写叙述代理(Proxy)模式的: 代理模式是对象的结构模式.代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理模式 ...
- Java 实现代理(Proxy)模式
类图 /** * 游戏者接口 * @author stone * */ public interface IGamePlayer { // 登录游戏 public void login(String ...
- 设计模式C++描述----13.代理(Proxy)模式
一. 举例说明 我们有时打开一个网站时会发现有这样的现象,网站上的文字都显示出来了,但是上面的图片还没显示,要等一会才能显示. 这些未打开的图片的位置上,还是会有图片框和一些等待的信息的,这就是代理模 ...
- 十、设计模式之代理(Proxy)模式
什么是代理模式 代理模式是对象的结构模式,为其他对象提供一种对象以控制对这个对象的访问. 代理模式的结构图如下:(源自大话设计模式) Subject:定义了RealSubject和Proxy的公共 ...
- 漫谈设计模式(一):代理(Proxy)模式与适配器(Adapter)模式对比
1.前言 为什么要将代理模式与适配器模式放在一起来说呢?因为它们有许多的共同点,当然也有一些不同的地方.首先两者都是属于结构型模式.结构型模型是这样定义的: 结构型模式涉及到如何组合类和类以获得更大的 ...
随机推荐
- Codeforces Round #298 (Div. 2) D. Handshakes 构造
D. Handshakes Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/534/problem ...
- spring---aop(6)---Spring AOP中ProxyFactoryBean介绍
写在前面 这篇文章里面就要说说Spring自己的AOP,搞清楚哪种方式是Spring自己实现的AOP,哪种方式是Spring引入aspectj的AOP. 简单例子 Spring自己的AOP实现在于Pr ...
- JAVA读取XML,JAVA读取XML文档,JAVA解析XML文档,JAVA与XML,XML文档解析(Document Object Model, DOM)
使用Document Object Model, DOM解析XML文档 也可参考我的新浪博客:http://blog.sina.com.cn/s/blog_43ac5543010190w3.html ...
- WINDOWS WPA性能分析
http://r12f.com/posts/introduction-to-wpa-1-why-it-is-slow/ http://www.freebuf.com/column/138862.htm ...
- 使用Bootstrap 3开发响应式网站实践06,使用ListGroup、Thumbnails展示内容
□ ListGroup展示内容 当希望把同类型的内容以列表.区块展示的时候,ListGroup是不错的选择. <div class="col-sm-6"> <h3 ...
- datagrid在MVC中的运用07-实现Master-Detail(使用PartialView)
本文主要体验用jQuery Easyui的datagrid来实现Master-Detail主次表.谢谢Kevin的博文,助我打开了思路. 主表显示所有的Category,当点击主表的展开按钮,显示该C ...
- linux常用命令集锦
linux 查看所有用户所在组 vi /etc/group 一个用户可以属于多个组,查看用户所属的组,groups + 用户名 linux 查找文件命令 find -name 文件名 在 ...
- KJBitmap与KJHttp的深度用法
摘要 本文原创,转载请注明地址:http://kymjs.com/code/2015/09/24/01这篇文章是对KJFrameForAndroid使用的一个深入学习 之前写过一些有关KJFrame的 ...
- GIF图片合集(用于网络请求图片用)
GIF图片合集(用于网络请求图片用)
- 通过@Value注解读取.properties配置内容
@Controller @RequestMapping("/value") public class ValuePropertyController extends Applica ...