代理(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 #295 (Div. 2)A - Pangram 水题
A. Pangram time limit per test 2 seconds memory limit per test 256 megabytes input standard input ou ...
- C#高级编程9-第5章 泛型
泛型 1.泛型概述 泛型是C#的部分与中间语言IL集成.创建的类或方法指定了类型,在实例化和调用时必须指定类型进行操作. 泛型可以用于类.方法.接口和委托以及结构. 泛型也是结构,同时是运行库CLR定 ...
- Linux下Qt安装
1.下载qt-everywhere-opensource-src4.7.2.tar.gz(http://download.qt.io/archive/qt/4.7),并解压在/opt目录下,文件名为q ...
- 小程序在wxml页面中取整
小程序无法像html中,在页面中直接parseInt() index.wxml {{price | Int}} 小程序还有另一种处理方法 wxs 是一种类似于js脚本的东西 filters.wxs v ...
- 在Windows Server 2008 R2中使用web方式修改域用户账户密码
在Windows的domain环境下,加域的客户端修改账户密码是一件很easy的事情:即使没有加域的客户端如果组织中,使用Exchange邮件系统,借助Exchange的owa也可以轻松修改账户密码. ...
- firedac使用UNIXODBC连接SQLSERVER
firedac使用UNIXODBC连接SQLSERVER 1)下载 SQL SERVER ODBC DRIVER FOR 64-BIT LINUX. 如果你有旧版mssql 工具安装,请删除任何较旧的 ...
- wrap ConcurrentDictionary in BlockingCollection
ConcurrentDictionary<int, BlockingCollection<string>> mailBoxes = new ConcurrentDictiona ...
- CMMI5级——原因分析及解决方案(Causal Analysis and Resolution)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010825142/article/details/15338085 聪明的人在出现问题的时候,除了 ...
- Python 3.6学习笔记(一)
知识是一座宝库,而实践就是开启这座宝库的钥匙. ----Thomas Fuller 开始之前 基础示例 Python语法基础,python语法比较简单,采用缩紧方式. # print absolute ...
- mysqldump与source
mysqldump示例 mysqldump --default-character-set=utf8 -d --opt -hlocalhost -uroot -p123456 --where=&quo ...