8种结构型模式 之1 PROXY 代理模式

代理模式也叫委托模式,给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。是一项基本的设计技巧。分为普通代理和强制代理。 另一个角度又分为静态代理和动态代理。

[img]http://dl.iteye.com/upload/attachment/552285/f1e3634c-0064-3d36-a8f5-08a1cfc911fa.png[/img]

[b]Subject接口[/b]
public interface Subject {
void operation(String arg);
}

[b]RealSubject类[/b]
public class RealSubject implements Subject {

@Override
public void operation(String arg) {
System.out.println("实际操作, 参数:" + arg);
}

}

[b]ProxySubject类[/b]
public class ProxySubject implements Subject {

private Subject beProxy;

public ProxySubject(Subject beProxy) {
this.beProxy = beProxy;
}

@Override
public void operation(String arg) {
System.out.println("代理操作, 参数:" + arg);
beProxy.operation(arg);
}

}

[b]TestProxy 测试类:[/b]
public class TestProxy {

public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
ProxySubject proxySubject = new ProxySubject(realSubject);

System.out.println("------------Without Proxy ------------");
doSomething(realSubject);

System.out.println("------------With Proxy ------------");
doSomething(proxySubject);
}

public static void doSomething(Subject subject){
subject.operation("flynewton");
}
}

[b]测试结果:[/b]
[quote]------------Without Proxy------------
实际操作,参数:liuwentao
------------With Proxy------------
代理操作,参数:liuwentao
实际操作,参数:liuwentao[/quote]

[b]游戏代练帮忙打怪[/b]

[img]http://dl.iteye.com/upload/attachment/552319/9ea288f9-7ece-3b25-84d1-07cb1958c64d.png[/img]

[b]1:普通代理:由代理生成真实角色,真是角色不能直接new出来[/b]

[img]http://dl.iteye.com/upload/attachment/552350/eb0b591e-6f3c-3c7f-bc72-69d2475060f6.png[/img]

约定真实角色不能 直接 new ,必须通过代理类才能操作。

真实角色,构造函数中 有 代理类参数,做判断
public GamePlayer(IGamePlayer _gamePlayer,String _name) throws Exception{
if(_gamePlayer == null ){
throw new Exception("不能创建真是角色!");
}else{
this.name = _name;
}
}

代理类构造函数中 new 真实角色
public GamePlayerProxy(String name){
try {
gamePlayer = new GamePlayer(this,name);
} catch (Exception e) {

}
}

测试类:
IGamePlayer proxy = new GamePlayerProxy("张三");
proxy.login("zhangsan","password");


[b]2:强制代理:由真是角色指定代理,不是指定的代理不能调方法[/b]

[img]http://dl.iteye.com/upload/attachment/552344/59d85147-6639-3dba-8f3b-67712d1c5609.png[/img]

测试:

		//定义个游戏的角色
IGamePlayer player = new GamePlayer("张三");
//获得指定的代理
IGamePlayer proxy = player.getProxy();
//开始打游戏,记下时间戳
System.out.println("开始时间是:2009-8-25 10:45");
proxy.login("zhangSan", "password");
//开始杀怪
proxy.killBoss();
//升级
proxy.upgrade();
//记录结束游戏时间
System.out.println("结束时间是:2009-8-26 03:40");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值