Java设计模式—代理模式(porxy pattern)

在看《Java编程思想》中复用类时,书中提到了代理模式。代理模式与继承,组合同为复用类的方式。

  • 组合:在新的类中使用现有类的对象(使用现有类功能而非其接口)。
  • 继承:按照现有类的类型来创建新类(使用现有类的一个特殊版本,如轿车是汽车的一个特殊版本)。
  • 代理:将现有类置于对象中,同时在新类中暴露该对象的方法。

其实代理分为静态代理与动态代理,这里所说的是静态代理。动态代理的知识推荐这篇文章:java的动态代理机制详解

用途

代理用途很多,比如它有保护对象的功能。假如我创建了一个只想让特定用户访问的类的对象,就可以通过代理进行权限控制。

下面就以一个例子说明代理模式。

class Person {
    //简洁考虑不写get函数了
    String identity; 
    Person(String str) {
        identity = str;
    }
}
class MyHouse {
    void openDoor() {};
    void sleep() {};
}
//任何想要进房子的人都必须经过guard
class MyHouseGuard {
    MyHouse house = new MyHouse();
    void openDoor(Person person) {
        //只为owner开门
        if(person.identity.equals("owner")) {
            house.openDoor();
        }
    }
}
public class Test {
    public static void main(String[] args) {
        Person thief = new Person("thief");
        Person owner = new Person("owner");
        MyHouseGuard guard = new MyHouseGuard();
        guard.openDoor(thief); //fail
        guard.openDoor(owner); //success    
    }
}

代码中MyHouseGuard即为MyHouse提供代理的类,其中既组合了MyHouse,又暴露了MyHouse的openDoor方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
支持代理协议:   HTTP, HTTPS, FTP, Telnet, NNTP, SMTP, POP, IMAP, LPR, LDAP, ICP, DNS, SSL, Socks   GateProxy.exe 是个能独立运行的软件,实用于Windows系统所有操作系统.支持WIN98(98上可能有少数性能限制,我没有仔细测试),WINNT,WIN2000,WINXP,WIN2003,VISTA系统,可能包括微软以后发布的操作系统,其原因就是直接走底层调用,不使用微软基本库 比较适合做入侵的朋友使用,这套代码也可以作为硬件防火墙做代理网关使用,当然要想做也还要手工制作的    文件列表: GateProxy.exe 软件制作说明: 本软件是完全粘贴EXE生成,用HEX进制编辑生成,纯手工制作,软件不支持任何形式的逆向工程和软件反编译 本程序是纯PE格式的文件,软件制作时horse_b用VC++实现了几个基本代理的EXE,基于这几个EXE,采用HEX编 辑生成最后的可执行代码GateProxy.exe 软件中绝对不含任何形式的后门和trojan程序,如果您发现任何木马迹象,请发邮件和我联系 软件使用说明: 请大家自己测试,软件支持命令行输入,也可以安装成服务,如果安装成服务,服务器端口可以走通本软件的所有代理协议 ParisProxy 项目说明 Paris 是欧洲古代神话传说中的特洛衣王子,我是为了怀念几年前研究木马的那段战斗式的生活起的名字,现在就把这个代理服务器叫ParisProxy ParisProxy 命令行参数 命令行参数是:gateproxy.exe -P8989 启动服务,通用代理端口是8989,8989端口可以走通Parisproxy的所有协议,如果不加-P8989就直接走单一协议 如果有人和我讨论用HEX和二进制开发软件,可以来信和我讨论: 我的专门接受此类问题的EMAIL: winddk64@gmail.com 或者 winddk64@163.com 请访问网站:www.horseb.org www.horseb.net  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值