什么是代理模式?
为其他对象提供一种代理以控制对这个对象的访问.说白了,对应到现实生活中就是:某人想做一件事,但是不想或不能直接去做,这时候就需要找个人来替他做这件事。
代理模式一般涉及到三个角色:
抽象角色:声明真实对象和代理对象的共同接口;
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
生动的例子
我们每个人几乎都有春节回家买火车票的经历吧,那是相当的痛苦,跑到火车站售票口排一晚上的队都不一定能买到票。有需求就有市场啊,于是就有了票贩子,我们宁愿多花点钱,能买到回家的票是主要的啊,于是恶性循环开始了。。。
在这个例子中:
抽象角色就是买票这个行为,乘客和票贩子都有的共同行为;
代理角色就是乘客,乘客在找票贩子之前肯定要先查一下火车的班次、票价等信息,然后联系票贩子买票,买到后付款等等;
真实角色就是票贩子了,最终去买票的是票贩子,因为乘客必须要经过他才能买到票。
类图:
实例代码
/**
* 买票
* @author User
*
*/
public interface BuyTicket {
void buy();
}
public class Scalper implements BuyTicket {
@Override
public void buy() {
System.out.println("火车站内部拿票或者去也去排队买票!");
}
}
public class Passenger implements BuyTicket {
Scalper scalper = new Scalper();
@Override
public void buy() {
System.out.println("查询火车班次和票价");
scalper.buy();
System.out.println("验票付款");
}
}
与其他模式的比较
适配器模式
看上去,适配器模式与代理模式很像,他们都可视为一个对象提供一种前置的接口,但是,适配器的用意是要改变所考虑的对象的接口,而代理模式并不能改变所代理的对象的接口。
装饰模式
装饰模式与所装饰对象具有相同的接口,因此这两种模式也有可能混淆。但是,装饰模式应当为所装饰的对象提供增强功能,而代理模式是对代理对象的使用进行控制,并不提供代理对象本身的增强功能。
门面模式
有时候门面模式兼任代理的模式,这种时候门面模式又叫做代理门面模式,或者门面代理模式。
- 大小: 13.1 KB
分享到:
相关推荐
Proxy模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用。这种模式在软件工程中广泛应用,主要用于控制对真实对象的访问,提供额外的功能,如日志、...
Proxy模式是一种设计模式,它在软件工程中扮演着重要的角色,允许我们为其他对象提供一个替代接口,从而控制对原对象的访问。这种模式的主要目的是为了增加灵活性、添加额外功能或者在访问对象时提供安全控制。在...
到工厂方法到抽象工厂,这几种都带有“工厂”的模式,总是容易叫人迷糊,我仔细研究了下,然后用简单的例子做类比,列出了自己的通俗理解和比较,大部分是自己的体会,感觉理的比较清楚,末尾提了下Proxy模式。
MySQL数据库中间件:基于C语言开发,包含59个文件,包括22个C源文件...该项目是一个分布式MySQL数据库中间件,采用Proxy模式设计,基于核心业务对象切分,旨在提供高效的数据库查询和处理能力,适用于分布式系统环境。
标题中的“从房屋买卖看 java proxy 模式”暗示了我们将通过一个具体的场景来探讨 Java 中的代理(Proxy)模式。在软件设计中,代理模式是一种结构型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在...
Proxy模式是软件设计模式中的一个关键元素,属于结构型模式的一种。在C++中,Proxy模式主要用于为其他对象提供一种代理以控制对这个对象的访问。这种模式的核心思想是通过创建一个代理对象来充当目标对象的中介,...
代理模式是一种设计模式,它是结构型模式之一,主要用于在客户端和目标对象之间建立一个代理对象,以便控制对目标对象的访问。在C++中,代理模式可以用来为其他对象提供一种代理以控制对这个对象的访问,或者增加...
JDK动态代理基于接口实现,它要求目标对象必须实现至少一个接口,然后通过Proxy类和InvocationHandler接口来创建并控制代理对象。当我们调用代理对象的方法时,实际执行的是InvocationHandler的invoke方法,这样可以...
在Java中,Proxy模式主要依赖于Java的动态代理机制,这通常涉及到`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`两个核心接口。`Proxy`类用于生成代理对象,而`InvocationHandler`接口定义了...
内附完整配置教程和修改后的apache的httpd.conf文件和tomcat的server.xml配置文件,包含test测试项目,不包含apache和tomcat安装文件。 本教程参考网上资料,本机测试成功,如有问题可以私信说明。
Proxy模式是设计模式中的一种,它提供了一种对对象访问的控制手段,使得在不修改原有对象的基础上,可以通过代理对象来扩展或增强原有对象的功能。在Java编程中,Proxy模式的应用非常广泛,尤其是在处理远程调用、...
Proxy模式是一种设计模式,其主要目的是为其他对象提供一个代理以控制对这个对象的访问。在Delphi中,Proxy可以用于创建远程代理,使得客户端可以像操作本地对象一样操作远程服务。这种模式在分布式系统、数据访问...
Proxy 模式是一种结构型模式,用于提供一种访问对象的接口。Proxy 模式的优点是可以提供一种统一的访问对象的接口,减少了代码的耦合度。Proxy 模式的缺点是它可能会增加代码的复杂度。 7. Adapter 模式 Adapter ...
设计模式之 Proxy(代理) 以 Jive 为例,剖析代理模式在用户级别授权机制上的应用 设计模式之 Facade(门面?) 可扩展的使用 JDBC针对不同的数据库编程,Facade提供了一种灵活的实现. 设计模式之 Composite(组合) ...
本文将深入探讨FACADE模式、Adapter模式以及Singleton和Proxy模式的基本概念、应用场景和关键要素。 首先,FACADE(外观)模式是一种接口型模式,它的主要作用是为复杂的子系统提供一个简单的接口,使得客户端无需...
由浅入深地讲解了16个设计模式,包括 singleton模式、Factory模式、Abstract Factory模式、Builder模式、Prototype模式、Adapter模式、Bridge模式、Composite模式、Decorator模式、Flyweight模式、Proxy模式、Chain ...
我自己用eclipse写的java代码,可以直接用eclipse导入,也可以直接用java -jar proxy_sample.jar执行 代码量很小,尽量通过注释进行说明 本例实现了InvocationHandler...在研究代理模式(Proxy模式)的朋友可以交流一下
Proxy模式是一种行为型设计模式,它为其他对象提供一种代理以控制对这个对象的访问。在提供的代码中,`ICar`接口定义了`MoveCar()`方法,它是所有汽车类需要遵循的行为规范。`ProxyCar`类是代理,实现了`ICar`接口,...
例如,远程对象访问、数据库连接池等场景都广泛使用了Proxy模式。 这些设计模式在软件开发中起着关键作用,它们提供了解决常见问题的标准方案,提高了代码的可读性、可维护性和可扩展性。理解并熟练运用这些模式,...