class FileDownloader(
public download(File file);
}
class File{
}
//一般代理类使用 Proxy 后缀
class FileDownloaderProxy{
FileDownloaderProxy(FileDownloader downloader){
this.downloader = downloader;
}
private FileDownloader downloader;
public download(File file){
//这里可以添加通知,通知用户开始下载文件
notifyDownloadWillStart();
//调用代理目标类的方法,进行下载文件
this.downloader.download(file);
//这里可以添加通知,通知用户文件下载完成
notifyDownloadIsComplete();
}
private void notifyDownloadWillStart(){
System.out.println(“下载开始...”);
}
private void notifyDownloadIsComplete(){
System.out.println(“下载完成!”);
}
}
Client:
FileDownloaderProxy proxy = new FileDownloaderProxy( new FileDownloader());
proxy.downlaod(file);
代理模式提供了一种间接性,可以做一些附加工作,比如记录日志,触发一些事件等,Spring 框架中大量使用了这个模式来进行 AOP 编程。
分享到:
相关推荐
设计模式快速参考卡片的知识点涵盖设计模式的定义、用途、分类以及具体的设计模式实现,下面将详细阐述这些要点。 ### 设计模式定义 设计模式是面向对象软件设计中的经验总结,它们提供了解决特定问题的通用方案,...
结构型设计模式包括适配器(Adapter)、桥接(Bridge)、装饰(Decorator)、外观(Facade)、享元(Flyweight)、组合(Composite)和代理(Proxy)。这些模式帮助我们更好地组织类和对象之间的关系,实现松耦合,...
这份资源主要关注GoF(Gang of Four,即《设计模式:可复用面向对象软件的基础》一书的四位作者)提出的23种设计模式,并提供了C++语言的实现代码,是提升C++程序员设计能力的高级参考资料。 设计模式是经过时间和...
### 设计模式精解——GoF 23种设计模式解析 #### 0. 引言 设计模式作为面向对象编程的重要组成部分,在软件工程领域扮演着至关重要的角色。本书《设计模式精解——GoF 23种设计模式解析》旨在深入浅出地介绍由...
基于Java的设计模式——代理模式demo的实现(高分课设)个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用...
### GOF设计模式详解 #### 一、设计模式概述 **设计模式**(Design Patterns)是软件工程中的一个重要概念,它是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。本章节将从多个角度对设计模式...
"设计模式代码-仅供参考"这个主题,意味着我们将探讨如何通过代码实现这些设计模式。 在给定的标签“源码”和“工具”中,我们可以推测这个压缩包可能包含了用于理解和学习设计模式的实际代码示例。源码是理解设计...
DAO(Data Access Object)设计模式是一种在软件...这个例子中的"DAOFinal"可能包含了实现这些设计模式的具体代码和SQL脚本,供开发者参考学习。通过实践这些模式,开发者可以构建出更加健壮、易于维护的数据库访问层。
2. **重用性**:通过设计模式可以快速解决问题,提高开发效率。 3. **灵活性**:设计模式鼓励开发者采用更灵活的方式组织代码,便于后期扩展和维护。 ### GOF设计模式 1. **种类**:共有23种设计模式被记录在著名...
总之,GOF设计模式和设计模式精解是软件工程师的宝贵参考资料,无论你是初学者还是经验丰富的开发者,都应该熟悉和掌握这些模式,以便在项目中灵活运用,提高代码质量和可维护性。通过深入学习这些设计模式,不仅...
设计模式参考《大话设计模式》 工厂简单模式 创造型模式 工厂方法模式 抽象工厂模式 原型模式 建造者模式 单例模式 结构型模式 队列模式 桥接模式 组合模式 装饰模式 外观模式 享元模式 代理模式 行为模式(类行为...
《C#经典设计模式及代码示例》是针对C#开发者深入理解并应用设计模式的一份宝贵资源。设计模式是软件工程中经过实践验证的、解决常见问题的有效模板,能够帮助程序员提高代码的可读性、可维护性和复用性。这本书结合...
吕震宇的《设计模式速成经典示例》通过具体的C#代码示例,深入浅出地讲解了这些模式的使用场景和实现方式,对于C#开发者来说,是一本不可多得的参考书。通过实践这些示例,开发者可以更好地将设计模式融入到日常开发...
本资源“参考文档-23种JAVA设计模式和15种J2EE设计模式.zip”包含了Java语言和J2EE平台下广泛使用的设计模式,旨在帮助开发者提升软件设计能力,实现更加高效、灵活和可维护的代码。 首先,我们关注Java的23种经典...
动态代理设计模式是一种在运行时创建代理对象的技术,它允许我们为现有的对象提供额外的功能,如日志记录、性能监控、事务管理等,而无需修改原对象的代码。这种模式在Java和许多其他编程语言中都有应用,尤其在...
3. **模式间的相互关系**:了解不同设计模式之间的关联和区别,比如装饰器和代理模式的区别,或者单例模式与静态内部类的实现差异。 4. **模式的优缺点**:评估每种模式的适用性和潜在问题,如过度设计或性能影响。 ...