1,UML图
抽象主题角色:声明了真实主题和代理主题的共同接口,这样一来在任何可以使用
真实主题的地方都可以使用代理主题。
代理主题(Proxy)角色:代理主题角色内部含有对真实主题的引用,从而可以在任何时候操作真实主题对象;代理主题角色提供一个与真实主题角色相同的接口,以便可以替代真实主体;控制对真实主题的引用,负责在需要的时候创建真实主题对象(和删除真实主题对象);代理角色通常在将客户端调用传递给真实的主题之前或者之后,都要执行某个操作,而不是单纯地将调用传递给真实主题对象。
真实主题角色:定义了代理角色所代表的真实对象。
2, 模式说明
所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
代理主题并不改变主题的接口,因为模式的用意是不让客户端感觉到代理的存在;其次,代理使用委派将客户端的调用委派给真实的主题对象,换言之,代理主题起到的是一个传
递请求的作用;最后,代理主题在传递请求之前和之后都可以执行特定的操作,而不是单纯传递请求。
3,模式示例代码
package com.maohao.struct.proxy;
public abstract class Subject {
/**
* 声明某个商业方法
*/
abstract public void request();
}
package com.maohao.struct.proxy;
public class RealSubject extends Subject {
/**
* 构造子
*/
public RealSubject() {
}
@Override
public void request() {
System.out.println("From real subject");
}
}
package com.maohao.struct.proxy;
public class ProxySubject extends Subject {
private RealSubject realSubject;
/**
* 构造子
*/
public ProxySubject() {
}
@Override
public void request() {
preRequest();
if(realSubject == null) {
realSubject = new RealSubject();
}
realSubject.request();
postRequest();
}
/**
* 请求前的操作
*/
private void preRequest() {
//...
}
/**
* 请求后的操作
*/
private void postRequest() {
//...
}
}
4,与其他模式比较
与适配器模式:粗看上去,适配器模式与代理模式很相像,它们都可视为一个对象提供一种前置的接口。但是,适配器模式的用意是要改变所考虑的对象的接口,而代理模式并不能改变所代理的对象的接口中,在这一点上两个模式有明显的区别。
与装饰模式:装饰模式与所装饰的对象具有相同的接口,因此这两种模式也有可能混淆。但是装饰模式应当为所装饰的对象提供增强功能;而代理模式对对象的使用施加控制,并不提供对象本身的增强功能。
5,模式应用
Java反射和动态代理
- 大小: 23.4 KB
分享到:
相关推荐
其中,“代理模式”作为结构型设计模式之一,在解决特定问题方面表现出色。本文将详细介绍Java中的虚拟代理模式(Virtual Proxy),探讨其原理、应用场景以及实现方式。 #### 二、虚拟代理模式概述 虚拟代理模式是...
这是JAVA设计模式中属于结构模式的部分,包括Flyweight(共享模式)、Bridge(桥模式)、Decorator(装饰模式)、Composite(组合模式)、Adapter(适配器模式)、Proxy(代理模式)、Facade (外观模式)的源代码。其中有些模式中...
今天我们要探讨的是“Java设计模式之结构型模式”。结构型模式主要关注如何组织类和对象,以达到良好的架构,提升代码的可读性和可维护性。在这个主题中,我们将深入理解并讨论这些模式的原理、应用场景及其实现。 ...
在软件开发领域,设计模式和体系结构是至关重要的概念,它们是解决常见问题的模板,为软件的可扩展性、可维护性和可重用性提供了基础。本资源"软件设计模式与体系结构课后习题代码(孙玉山).zip"包含了孙玉山教授讲解...
代理模式是软件设计模式中的一种结构型模式,它在对象交互过程中引入一个代理,代理对象负责控制对原对象的访问。这种模式的主要目的是为了解耦,提供一种替代真实对象的方式,使得客户端代码可以更加灵活地处理对象...
代理模式是一种常用的设计模式,它在软件开发中起到了中介或者代表的作用。代理模式的主要目的是为其他对象提供一种代理以控制对这个对象的访问。通过引入代理,我们可以增加新的功能,如缓存、日志记录、访问控制等...
《软件设计模式与体系结构》是软件开发领域中的核心理论之一,它关乎到软件的可维护性、可扩展性和灵活性。这份压缩包“软件设计模式与体系结构(期末复习1).rar”包含了对这一主题的复习资料,特别是对于期末考试...
本实验报告主要探讨了五个关键的设计模式:组合模式、外观模式、代理模式、观察者模式以及策略模式,这些都是软件体系结构中的重要组成部分,对于理解和优化代码结构具有深远影响。 1. **组合模式**: 组合模式是一...
"设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...
在软件开发领域,设计模式和体系结构是至关重要的概念,它们是构建可扩展、可维护且高效软件系统的基础。设计模式是一种在特定情况下解决常见问题的标准化解决方案,而体系结构则是软件系统的整体构造和组织方式。这...
设计模式结构图 在软件开发中,设计模式是一种重要的概念,它帮助开发者更好地设计和实现软件系统。设计模式提供了一种通用的解决方案,可以重复使用,以减少软件开发中的成本和时间。 从给定的文件信息中,我们...
在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...
孙云山老师的“软件设计模式与体系结构”课程深入探讨了这些模式及其在构建复杂系统中的应用。本资料集合包含了课后习题的第234章答案,这将有助于学生深化对设计模式的理解,并提升其实际应用能力。 设计模式是...
设计模式之Proxy(代理) 设计模式之Adapter(适配器) 设计模式之Composite(组合) 设计模式之Decorator(油漆工) 设计模式之Bridge 设计模式之Flyweight(享元) 行为模式: 设计模式之Template 设计模式之Memento(备忘机制...
《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...
在软件开发领域,设计模式和体系结构是两个至关重要的概念,尤其在大型项目中,它们对于软件的可维护性、可扩展性和可复用性起着决定性的作用。本项目——“服装管理系统”是一个很好的实践案例,让我们深入探讨其中...
以下是关于“设计模式之结构型模式”的详细解析。 1. **适配器模式**: 适配器模式是一种结构型设计模式,它允许不兼容的接口之间进行通信。当现有类的接口与系统需求不匹配时,适配器模式能将旧接口转换为新接口,...
代理模式是设计模式中的一种结构型模式,它在对象交互中起到了中介的作用,允许通过代理对象来控制对原对象的访问。代理模式的核心思想是为一个对象提供一个替身,以便增加新的功能或者控制对原对象的访问。这种模式...
2. 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问,可以用于远程代理、虚拟代理、保护代理等。 3. 桥接模式(Bridge Pattern):将抽象部分与它的实现部分分离,使它们都可以独立地...