代理(Proxy)模式给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
为其它对象提供一种代理以控制对目标对象的访问。即第三方对象通过访问代理对象而达到访问目标对象之目的,与此同时,代理对象在访问目标对象前后加入特定的逻辑以实现功能的扩展
interface IProxy
{
string Function1();
string Function2();
}
远程对象实现:
/// <summary>
/// 模拟的远程对象
/// </summary>
public class LongDistanceClass:IProxy
{
#region IProxy 成员
public string Function1()
{
//do someting
return "LongDistanceClass.Function1";
}
public string Function2()
{
//do someting
return "LongDistanceClass.Function2";
}
#endregion
}
接下来就要实现代理类型,使用代理对象访问模拟的远程对象,代理类型实现如下:
public class ProxyClass:IProxy
{
#region IProxy 成员
public string Function1()
{
//to access LongDistanceClass.Function1
LongDistanceClass obj = new LongDistanceClass();
return obj.Function1();
}
public string Function2()
{
//to access LongDistanceClass.Function2
LongDistanceClass obj = new LongDistanceClass();
return obj.Function2();
}
#endregion
}
最后实现客户端代码:
class Class1
{
[STAThread]
static void Main(string[] args)
{
IProxy pro = new ProxyClass();
Console.WriteLine(pro.Function1());
Console.WriteLine(pro.Function2());
Console.Read();
}
}
运行结果如下:
LongDistanceClass.Function1
LongDistanceClass.Function2
代理模式和装饰者模式上在语法形式上几乎完全一样,那么它们的区别在哪里呢?
装饰者模式:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰模式相比生成子类更加灵活
代理模式:为其它对象提供一种代理以控制对这个对象的访问。
其实,它们的着重点一个在于“增加”职责,另一个在于“控制”访问。这是它们最本质的区别。
由此可以看到:学习设计模式重点在于“语义”上把握,而不是追求它的“形式。
- 大小: 39.6 KB
分享到:
相关推荐
全部高质量代理模式proxy的java源程序 java.proxy,代理模式源码,设计模式,apache开源项目源码commons-proxy-1.0-src 各种代理模式操作的工具类源码以及代理模式案例源码,你会从中得到意想不到的效果! apache...
Google Chrome插件: Proxy ...2. 拖拽Proxy-SwitchyOmega_2_5_15_0.crx到扩展管理界面 3. 安装 原始安装路径: https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif?hl=en
发出针对此脚本的cURL请求添加具有身份验证密钥的Proxy-Auth标头添加具有代理请求的URL的Proxy-Target-URL标头(可选)为调试模式添加Proxy-Debug标头为了保护未授权用户使用代理,请考虑在和所有请求中更改Proxy-...
设计模式C++学习之代理模式(Proxy)
java 代理模式demo ,主要就是对代理模式的一种实现过程,用于刚接触代理模式的人使用,里面介绍了两种代理模式,一种是静态代理,另一种是动态代理的实现Demo
Java设计模式精讲-代理模式
通过设置 > 扩展程序 > 开发者模式(开启) > 加载已解压的扩展程序,选择 simply-proxy 文件夹进行安装。 下载 crx 文件安装 功能特点 该扩展主要是为了解决前后端分离开发(如 Vue 项目)的过程中,反向代理配置...
可以使用所有 http-proxy 选项,以及一些额外的 http-proxy-middleware 选项。 确定应将哪些请求代理到目标主机。 要代理的目标主机。 (协议+主机)。 提供一种替代方法来决定应该代理哪些请求; 如果您无法使用...
- 代理模式 - 静态代理与动态代理 - 常见的动态代理实现 - JDK Proxy - CGLIB - JDK Proxy 和 CGLIB 的对比 - 动态代理的实际应用 - Spring AOP 说在前面:今天我们来聊一聊 Java 中的代理,先来聊聊故事...
JAVA Proxy 代理模式
在这种模式下,您将服务器视为透明代理,它不会修改任何 HTTP 数据(包括标头和正文)。 const express = require ( 'express' ) ; const path = require ( 'path' ) ; const { TIMEOUT_PROXY , } = require ( '....
2、代理模式(Proxy) 用意:为其它对象提供一种代理以控制对这个对象的访问
Proxy代理模式的经典实例(很有面向对象思想哦)。快速学会Proxy代理模式.
节点http代理具有单进程模式或多进程模式(设置参数“ -i”)的节点http代理服务器安装node-http-proxy $npm install -g node-http-proxy服务器启动 $nproxy start -p 9999 -i 1# start proxy server# create child ...
代理模式java代码 Proxy(4) 开发宝典......
Android设计模式之代理模式(Proxy Pattern)
为其他对象提供一个代理以控制对这个对象的访问。
mysql-proxy-rs基于tokio-core构建MySQL代理服务器的实现。 概述此板条箱提供了一个MySQL代理服务器,您可以将其用作mysql-proxy-rs基于tokio-core构建MySQL代理服务器的实现。 概述此板条箱提供了一个MySQL代理...
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。
代码仅供参考学习 。