proxy就是代理,也可以叫委托。说通俗点,就是委托第三方给原来的功能动态的添加一些新的功能,但是对于使用者来说却没有丝毫影响,原来的使用方法同样使用于新功能。呵呵,听起来有点玄,其实用到开发上会非常有用,废话不说看代码。
有一个类User代表用户
class User
{
public function use(p:IProduct):Void
{
p.getIt(); //使用产品
}
}
产品类CProduct以及接口IProduct
Interface IProduct
{
function getIt():Void
}
class CProduct implements IProduct
{
public function getIt():Void
{
//code in CProduct //旧的实现功能
}
}
这是一个典型的基于接口的编程方法,使用也简单:
var user:User = new User();
user.use(new CProduct());
但是功能是可以变的,如果现在我们需要在旧功能上添加一种新的功能,该怎么办,再重写一个实现类吗(工厂模式),这样就不得不把原有的功能再写一遍。而且,原来的功能还要使用,可以说是两种新老功能并存。更不能修改原有的功能。在这里用proxy就比较合适了。
class CNewProduct extends CProduct
{
public function getIt():Void //重写原来的方法
{
//添加新功能
super.getIt(); //关键是这里,使用了父类的同名方法
}
}
proxy在这里使用了继承的方式(继承只是一种实现方式而已)扩展了功能,同时对原有的功能没有任何印象。再看看如何使用
var user:User = new User();
user.use(new CNewProduct());
呵呵,看到了吗,按需使用,原来的代码丝毫不做修改,还是使用use方法,原有的功能也能保留,代码也做到了最大限度的重用。如果以后还要扩展,使用这样的方法将丝毫不会对原系统有任何影响。
小总结一下:
proxy目的:动态地添加新功能,同时保持调用方式不变。
适用范围:
1 动态地添加新功能
2 新功能的使用和原有的方式一致
文章来自: 闪无忧(www.5uflash.com) 详文参考:http://www.5uflash.com/flashjiaocheng/Flashyuweb/908.html
分享到:
相关推荐
Proxy模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到...通过分析和运行这些示例,你可以更深入地掌握如何在Java中使用Proxy模式来增强对象的功能或控制其访问。
总的来说,代理模式是设计模式中的重要一环,它在系统中提供了扩展点,允许我们在不修改原有代码的情况下,增加新的功能或控制。无论是JDK动态代理还是CGLIB,都是实现这一模式的有效工具。理解并掌握代理模式,对于...
代理模式是一种设计模式,它是结构型模式...通过代理模式,我们可以灵活地在不修改原有代码的基础上增强功能或控制访问,提高了代码的可维护性和可扩展性。在C++中,合理利用代理模式能够使我们的设计更加优雅和健壮。
在Java中,我们可以使用静态代理或动态代理来实现Proxy模式。静态代理是通过显式创建一个代理类来实现的,而动态代理则利用Java的反射API和InvocationHandler接口在运行时动态生成代理类。 源码分析是理解设计模式...
总结,Java的动态代理是Java语言中一种强大的设计模式,它使得我们能够在运行时构建具有特定行为的代理对象,灵活地扩展和增强已有代码的功能,而无需修改原始代码。通过源码分析和工具的使用,我们可以更深入地理解...
通过Proxy模式,我们可以在不修改原有对象的基础上增加新的功能或控制策略,同时保持了良好的封装性和可扩展性。在C++中,由于支持多态和动态绑定,Proxy模式的实现尤为灵活。在实际项目中,可以根据需求选择不同的...
2. **快速切换**:由于是浏览器扩展,Falcon Proxy应该提供一键切换代理功能,用户可以在正常浏览和使用代理之间快速切换,无需每次都手动更改系统或浏览器的网络设置。 3. **安全与隐私**:使用代理服务可以增加...
2. **扩展功能**: 代理可以在调用真实对象之前或之后添加额外的行为,如日志记录、性能监控等。 3. **解耦**: 代理对象可以隔离客户端和真实对象,降低两者之间的耦合度。 4. **延迟加载**: 虚拟代理可以实现懒加载...
总的来说,Java动态代理为我们提供了一种灵活的编程模式,让我们可以在不修改原有代码的情况下扩展或增强已有类的行为,这对于实现AOP和工具类的构建非常有用。理解和熟练使用`java.lang.reflect.Proxy`可以帮助我们...
以下是一个使用动态代理购买汽车的例子: ```java public interface CarService { void buyCar(); } public class RealCarServiceImpl implements CarService { @Override public void buyCar() { // 购车逻辑...
在Java中,Proxy模式主要依赖于Java的动态代理机制,这通常涉及到`java.lang.reflect.Proxy`和`java.lang.reflect.InvocationHandler`两个核心接口。`Proxy`类用于生成代理对象,而`InvocationHandler`接口定义了...
总的来说,Java 代理模式是通过代理类来增强或扩展目标类功能的一种设计模式,尤其适用于需要在调用前后添加额外逻辑的场景。通过深入理解代理模式和其在房屋买卖场景中的应用,我们可以更好地掌握这一重要的设计...
// 使用动态代理 Service realService = new RealService(); Service proxyService = (Service) DynamicProxy.getProxyInstance(realService); proxyService.doSomething(); ``` 代理模式在软件开发中有广泛的应用...
这种模式经常用于在不修改原有对象的情况下,扩展其功能,同时还能保持客户端代码的透明性。 代理模式主要有三种类型:虚拟代理、远程代理和保护代理。虚拟代理常用于对象创建开销较大的场景,如大图加载时先显示小...
在Java中,代理模式可以通过多种方式实现,包括静态代理和动态代理。 在提供的文件列表中,我们可以看到以下几个关键类: 1. `ProxyDisplay`:这个名字暗示了它可能是代理模式中的代理类,用于代表或代替某个实际...
在Java编程中,代理模式是一种设计模式,它允许我们在不修改原有对象的基础上,为对象添加新的功能或行为。代理模式通常分为三种类型:静态代理、动态代理和接口代理(也称为JDK动态代理)。这个"proxy.rar"压缩包中...
在软件设计中,代理模式可以帮助我们遵循开闭原则,即对扩展开放,对修改关闭,因为它允许我们在不改变原有系统的基础上,通过增加新的代理类来扩展系统功能。 总结来说,代理模式是通过创建代理对象来控制对目标...
Proxy模式是设计模式中的一种,它提供了一种对对象访问的控制手段,使得在不修改原有对象的基础上,可以通过代理对象来扩展或增强原有对象的功能。在Java编程中,Proxy模式的应用非常广泛,尤其是在处理远程调用、...
2. **生成Proxy代码**:在目标系统中,使用SE80事务码,通过“生成ABAP Proxy”功能,输入源系统的服务接口信息,自动生成对应的ABAP Proxy类和相关代码。 3. **编译与激活**:生成的Proxy代码需要在目标系统中进行...
### C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) #### 重要概念:代理模式 代理模式是一种常用的结构型设计模式,它通过为另一个对象提供一个代理,来控制对该对象的访问。这种模式在软件工程中...