首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

【设计方式】12.代理模式

2012-09-03 
【设计模式】12.代理模式代理模式:为其他对象提供一种代理以控制对这个对象的访问。优点:1.职责清晰2.高扩展

【设计模式】12.代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问。
优点:
1.职责清晰
2.高扩展性
3.智能化
使用场景:避免中间过程,减轻负担。典型动态代理场景:Spring AOP。

package com.syc.designpatterns.chapter12;public interface IGamePlayer {// 登录游戏public void login(String user,String password);// 杀怪,网络游戏的主要特色public void killBoss();// 升级public void upgrade();}

package com.syc.designpatterns.chapter12;public class GamePlayer implements IGamePlayer{private String name = "";// 通过构造函数传递名称public GamePlayer(String _name){this.name = _name;}// 打怪,最期望的就是杀老怪public void killBoss() {System.out.println(this.name + "在打怪!");}// 进游戏之前你肯定要登录吧,这是一个必要条件public void login(String user, String password) {System.out.println("登录名为:" + user + "的用户" + this.name + "登录成功!");}// 升级,升级又很多方法,花钱买是一种,做任务也是一种public void upgrade() {System.out.println(this.name + " 又升了一级!");}}

package com.syc.designpatterns.chapter12;public class GamePlayerProxy implements IGamePlayer {private IGamePlayer gamePlayer = null;// 通过构造函数传递要对谁进行代理public GamePlayerProxy(IGamePlayer _gamePlayer){this.gamePlayer = _gamePlayer;}// 代练杀怪public void killBoss() {this.gamePlayer.killBoss();}// 代练登录public void login(String user, String password) {this.gamePlayer.login(user, password);}// 代练升级public void upgrade() {this.gamePlayer.upgrade();}}

package com.syc.designpatterns.chapter12;public class Client {public static void main(String[] args){// 定义一个痴迷的玩家IGamePlayer player = new GamePlayer("张三");// 然后再定义一个代练者IGamePlayer proxy = new GamePlayerProxy(player);// 开始打游戏,记下时间戳System.out.println("开始时间是:2009-8-25 10:45");proxy.login("zhangsan", "password");// 开始杀怪proxy.killBoss();// 升级proxy.upgrade();// 记录结束游戏时间System.out.println("结束时间是:2009-8-26 03:40");}}

热点排行