普通对象所需要完成的任务就是通过公共接口为外界提供自己所承诺的服务(也就是让别的类调用它的方法),然而,有时候,一个合法的对象会因为某种原因而无法完成自己的常规任务。这个时候就需要一个代理对象来替它完成任务。由此可见代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理有两种方式:静态代理和动态代理
静态代理:在静态代理中代理对象与被代理对象都必须实现同一接口,在代理对象中可以实现日志这样的操作,在需要使用该操作的时候呼叫被代理对象,如此代理对象当中就可以仅保留业务相关职责。
公共接口:IBuySome.java
package org.kangsg219.staticProxy;
public interface IBuySome {
public void buy();
}
被代理对象:BuySomeImpl.java
package org.kangsg219.staticProxy;
public class BuySomeImpl implements IBuySome {
public void buy() {
System.out.println("买个手机。(BuySomeImpl类中的buy方法。)");
}
}
代理对象:BuySomeProxy.java
package org.kangsg219.staticProxy;
public class BuySomeProxy implements IBuySome{
BuySomeImpl bsi=new BuySomeImpl();
public void buy() {
this.beforBuy();
bsi.buy();
this.afterBuy();
}
public void beforBuy(){
System.out.println("在买东西前执行的一些动作。(BuySomeProxy类中附加的方法。)");
}
public void afterBuy(){
System.out.println("在买东西前执行的一些动作。(BuySomeProxy类中附加的方法。)");
}
}
测试类:TestMain.java
package org.kangsg219.staticProxy;
/**
* @author kangsg219
*
* 测试类
*/
public class TestMain {
public static void main(String[] args) {
IBuySome ibs=new BuySomeProxy();
ibs.buy();
}
}
运行结果:
在买东西前执行的一些动作。(BuySomeProxy类中附加的方法。)
买个手机。(BuySomeImpl类中的buy方法。)
在买东西前执行的一些动作。(BuySomeProxy类中附加的方法。)
待续。。。
分享到:
相关推荐
这里我们聚焦于C#语言中的设计模式学习笔记,涵盖了多种经典的设计模式,如合成模式、桥梁模式、装饰模式、享元模式、门面模式、命令模式、工厂方法、策略模式、代理模式以及状态模式。下面将对这些模式逐一进行详细...
10. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问,常用于远程代理、虚拟代理等。 11. **外观模式**:为一个复杂的子系统提供一个简单的接口,使得客户端不必了解子系统的内部细节。 12. **享元...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
11. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。在需要添加额外功能或控制访问权限时非常有用。 12. **责任链模式**:处理请求的发送者将请求传递给一系列的处理者,每个处理者都可以选择处理或...
《C++20设计模式》学习笔记-第12章代理模式-配套代码
这个压缩包文件包含了23种设计模式的学习笔记和源码,旨在帮助开发者深入理解并熟练运用这些模式。以下是对每种设计模式的详细解释,以及它们在Java编程中的应用。 1. **单例模式**:确保一个类只有一个实例,并...
Java代理模式是一种设计模式,它允许我们为一个对象创建一个代理,这个代理对象可以在调用原始对象的方法之前或之后执行额外的操作。代理模式在软件工程中有多种应用,例如:增加安全控制、性能监控、事务管理等。...
6. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问,常用于远程调用、安全控制等。 7. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到...
C#设计模式学习笔记是一份详尽的资源,适合任何希望深入了解如何在C#编程中应用设计模式的开发者。这份笔记涵盖了多种设计模式,旨在提升代码的可读性、可维护性和可扩展性,这些都是软件开发中至关重要的要素。 ...
1. **代理模式**: 代理模式提供一个代理对象来控制对原对象的访问。代理对象与目标对象具有相同的接口,可以增加额外的功能,如权限控制、缓存、日志记录等,而不会影响到原有对象的使用。代理模式分为静态代理和...
在本篇Spring学习笔记中,我们将深入探讨动态代理模式,并结合Spring框架的实现进行分析演示。动态代理模式是Java编程中一种重要的设计模式,它允许我们在不修改原对象代码的情况下,为对象添加额外的功能或行为。...
### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...
在本篇Spring学习笔记中,我们将探讨静态代理模式在Spring框架中的应用与分析。静态代理是一种常见的设计模式,它在不修改目标类代码的情况下,通过代理类来扩展或增强目标类的功能。在Spring中,静态代理主要应用于...
2. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。 3. 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们都可以独立地变化。 4. 组合模式(Composite Pattern):将对象...
9. **代理模式**:为其他对象提供一种代理以控制对这个对象的访问。它可以用于远程代理、虚拟代理、缓存等。 10. **桥接模式**:将抽象部分与它的实现部分分离,使它们都可以独立地变化。这种设计模式属于结构型...
### MyBatis学习笔记——代理DAO开发 #### 一、概述 在Java开发领域中,MyBatis是一款非常流行的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果...
3. **异常处理**:Java的异常处理机制是其强大的特性之一,学习笔记会讲解如何使用try-catch-finally语句块来捕获和处理程序运行时可能出现的错误。 4. **集合框架**:Java集合框架是存储和操作对象的重要工具,...
7. 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。 行为型模式涉及对象之间的责任分配,包括: 1. 责任链模式(Chain of Responsibility):将请求沿着处理者链传递,直到有对象处理为止。 2....