普通对象所需要完成的任务就是通过公共接口为外界提供自己所承诺的服务(也就是让别的类调用它的方法),然而,有时候,一个合法的对象会因为某种原因而无法完成自己的常规任务。这个时候就需要一个代理对象来替它完成任务。由此可见代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理有两种方式:静态代理和动态代理
静态代理:在静态代理中代理对象与被代理对象都必须实现同一接口,在代理对象中可以实现日志这样的操作,在需要使用该操作的时候呼叫被代理对象,如此代理对象当中就可以仅保留业务相关职责。
公共接口: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)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...
笔记文件的名称“DesignPatternStudy-master”暗示了这是一份专注于设计模式学习的系列笔记,而"master"可能表明这是该系列的核心或主文件,其他相关的文件可能是补充材料或者分章节的学习笔记。
在本篇Spring学习笔记中,我们将探讨静态代理模式在Spring框架中的应用与分析。静态代理是一种常见的设计模式,它在不修改目标类代码的情况下,通过代理类来扩展或增强目标类的功能。在Spring中,静态代理主要应用于...
2. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问。 3. 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们都可以独立地变化。 4. 组合模式(Composite Pattern):将对象...