代理模式:为其他对象提供一种代理以控制对这个对象的访问。
优点:
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");
}
}
分享到:
相关推荐
【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种...
设计模式_源代码大全.zip 包括:1.简单工厂模式 2.策略模式 3.装饰模式 4.代理模式 5.工厂方法模式 6.原型模式 7.模板方法模型 8.外观模式 9.建造者模式 10.观察者模式 11.抽象工厂模式 12.状态模式 13.适配器模式 ...
在编程中,代理模式也遵循这一原则,代理对象代替目标对象执行某些操作。例如,如果目标对象是一个鸟(Bird),它有一个fly()方法表示飞行,而代理对象(如BirdTimeProxy)则会在调用fly()方法前后记录时间,从而...
【第03章 从架构层面看设计模式02】主要探讨了如何在软件架构中应用设计模式,尤其是代理模式,以及如何结合其他模式优化系统。本章节通过一个电商设计模式实战案例,详细阐述了代理模式、享元模式、装饰者模式、...
本书《您的设计模式》对设计模式进行了详细的讲解,涵盖了策略模式、代理模式、单例模式、多例模式、工厂方法模式、抽象工厂模式、门面模式、适配器模式、模板方法模式、建造者模式、桥梁模式、命令模式、装饰模式、...
结构型模式关注如何组合和构建类或对象,如适配器模式(Adapter)、装饰器模式(Decorator)和代理模式(Proxy)。行为型模式则关注对象之间的交互和责任分配,如观察者模式(Observer)、策略模式(Strategy)和...
2. 结构型模式:它们处理类和对象的组合,如适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式和代理模式。装饰模式允许在运行时动态地给对象添加新的行为,而组合模式则实现了部分与整体的层次结构,...
设计模式是构建大型软件系统zui强大的方法之一,优化软件架构和设计...全书囊括单例设计模式、工厂模式、门面模式、代理模式、观察者模式、命令模式、模板方法模式、复合模式、状态设计模式以及反模式等多种设计模式。
5. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。在Java中,动态代理可以实现运行时绑定,用于实现AOP(面向切面编程)。 6. **装饰器模式**:动态地给一个对象添加一些额外的职责。装饰器模式...
[浪曦原创]JAVA设计模式.第6讲.代理模式之动态代理(jzkangta).part2
[浪曦原创]JAVA设计模式.第6讲.代理模式之动态代理(jzkangta).part1
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象工厂模式、单例模式、建造者模式、原型模式。 2.结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。 4.行为型模式:...
《设计模式》是一本经典的信息技术著作,主要探讨了软件工程中的设计模式,这些模式是经验丰富的开发者在解决常见设计问题时所总结的最佳实践。设计模式不仅有助于提高代码的可读性和可维护性,还能促进团队间的沟通...
这份文件是一份关于C++和设计模式的讲义,旨在帮助读者轻松入门并应用设计模式。文件中提到,设计模式是一套经过分类和编目、反复使用、多数人知晓、并且是代码设计经验的总结。它们之所以被广泛采用,是为了代码的...
书中可能会涵盖适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式有助于减少类之间的耦合,...
8. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。在Go中,可以使用接口和中间件(Middleware)实现代理。 9. **桥接模式**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。Go语言的接口...
Java设计模式是软件工程领域中一套被广泛认知和使用的标准解决方案,用于解决在软件设计中遇到的特定问题。设计模式可以提高软件开发的效率、可读性和可维护性。在面向对象的编程语言Java中,设计模式通过利用Java...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合... 2.设计模式的六大原则 1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要... 3.Java的23中...
2. 结构型模式:如代理模式(Proxy)、装饰器模式(Decorator)、适配器模式(Adapter)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式关注如何组织类和对象,...
JavaScript设计模式.pdf JavaScript设计模式是指在软件开发中使用JavaScript语言编写的设计模式。这些设计模式旨在提高代码的重用性、可读性、维护性和扩展性。以下是JavaScript设计模式的知识点总结: 1. 单体...