proxy就是代理,也可以叫委托。说通俗点,就是委托第三方给原来的功能动态的添加一些新的功能,但是对于使用者来说却没有丝毫影响,原来的使用方法同样使用于新功能。呵呵,听起来有点玄,其实用到开发上会非常有用,废话不说看代码。
有一个类User代表用户
class User
{
public function use(p:IProduct):Void
{
p.getIt(); //使用产品
}
}
产品类CProduct以及接口IProduct
Interface IProduct
{
function getIt():Void
}
class CProduct implements IProduct
{
public function getIt():Void
{
//code in CProduct //旧的实现功能
}
}
这是一个典型的基于接口的编程方法,使用也简单:
var user:User = new User();
user.use(new CProduct());
但是功能是可以变的,如果现在我们需要在旧功能上添加一种新的功能,该怎么办,再重写一个实现类吗(工厂模式),这样就不得不把原有的功能再写一遍。而且,原来的功能还要使用,可以说是两种新老功能并存。更不能修改原有的功能。在这里用proxy就比较合适了。
class CNewProduct extends CProduct
{
public function getIt():Void //重写原来的方法
{
//添加新功能
super.getIt(); //关键是这里,使用了父类的同名方法
}
}
proxy在这里使用了继承的方式(继承只是一种实现方式而已)扩展了功能,同时对原有的功能没有任何印象。再看看如何使用
var user:User = new User();
user.use(new CNewProduct());
呵呵,看到了吗,按需使用,原来的代码丝毫不做修改,还是使用use方法,原有的功能也能保留,代码也做到了最大限度的重用。如果以后还要扩展,使用这样的方法将丝毫不会对原系统有任何影响。
小总结一下:
proxy目的:动态地添加新功能,同时保持调用方式不变。
适用范围:
1 动态地添加新功能
2 新功能的使用和原有的方式一致
分享到:
相关推荐
Laravel开发-proxy Archiebot代理包
基于electron开发的内网穿透工具,支持多系统,支持任意本地端口.
Laravel开发-api-proxy Laravel的简单API代理
ABAP 调用ABAP PROXY
Laravel开发-laravel-proxy-config Laravel 4的配置代理。
FoxyProxy 是一款高级代理服务器管理工具,是 Firefox 火狐浏览器的代理插件,相比比 SwitchProxy、ProxyButton、QuickProxy、xyzproxy、ProxyTex 等扩展提供更多的功能。 FoxyProxy 通过使用通配符、正则表达式和...
一个简易的proxy程序的开发过程_源码
基于PROXY协议的远程自动化测试技术在射频测试中的应用,刘涛,,自动化测试作为人工测试的替代具有测试实时性好,成本低,测试参数精度高等优点,在工厂测试中具有广泛的应用前景,基于PROXY协议�
apache Proxy Error apache Proxy Error apache Proxy Error apache Proxy Error
Laravel开发-api-proxy-laravel 基于thinkingmik/api proxy laravel的用于javascript api调用的laravel代理包
proxy源代码,linux下的ftp 代理的源代码,大家多多支持啊
Laravel开发-laravel-route-proxy 多路径批量呼叫
goproxy-android snail007/goproxy全能代理服务器安卓版。项目使用androidstudio开发,基于snail007/goproxy官方安卓SDK开发
book 2020 for proxy settings
esri.config.defaults.io.proxyUrl is not set所缺文件 proxy.jsp、proxy.ashx、proxy.php、proxy.config
simple proxy
2014最新版proxy lab参考答案,小伙伴快来吧!
forum proxy leecher 1.11forum proxy leecher 1.11forum proxy leecher 1.11forum proxy leecher 1.11
所以在这里用到了nginx的proxy_redirect指定修改被代理服务器返回的响应头中的location头域跟refresh头域数值 以下是截取nginx的一小段配置文档 server { listen 80; server_name www.boke.com; l
OPC Proxy Foundation