`
hlzhou
  • 浏览: 111695 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类

代理模式的UML类图与实现源码

阅读更多

以下是一个代理模式的UML图:


源码:Image接口

 

public interface Image {
 void show();
}

 BigImage类

 

public class BigImage implements Image {
	public BigImage(){
		try {
//系统延时3秒用来模拟调用大图片时有系统延时
			Thread.sleep(3000);
			System.out.println("Image Successfully loaded.");
		} catch (InterruptedException e) {
			// TODO: handle exception
			e.printStackTrace();
		}
	}

	public void show() {
		System.out.println("Draw Real Image");
	}
}
 

 ImageProxy类

 

public class ImageProxy implements Image {

	private Image image;
	public ImageProxy(Image image){
		this.image=image;
	}
	
	public void show() {
		if(image==null){
			image=new BigImage();
		}
		image.show();
	}
}
 

 

 

BigImageTest类(客户端)

 

public class BigImageTest {

	public static void main(String[] args) {
		System.out.println("使用代理");
               //null,确保每次调用show方法需要示例化BigImage
		Image image=new ImageProxy(null);
		System.out.println("开始显示图片");
		image.show();
		System.out.println("***************************************");
		System.out.println("没使用代理");
		Image image2=new BigImage();
		image2.show();
	}
}
 

 

  • 大小: 10.5 KB
分享到:
评论

相关推荐

    常用设计模式UML类图

    《常用设计模式UML类图》 设计模式是软件工程中的宝贵经验总结,它们是针对常见问题的可重用解决方案。UML(统一建模语言)则是用来可视化这些设计模式的强大工具,它通过类图、对象图、序列图等方式帮助我们理解和...

    design-pattern:7大设计原则+ 23种设计模式(含UML类图)+设计模式在JDK中的源码分析Java语言

    这个压缩包文件“design-pattern:7大设计原则+ 23种设计模式(含UML类图)+设计模式在JDK中的源码分析Java语言”显然是一个关于设计模式的全面学习资源,涵盖了设计原则、多种设计模式以及它们在Java开发中的实际...

    设计模式汇总_圣思园Java版

    1. **UML类图**:统一建模语言(UML)是一种图形化表示软件系统的方法,它可以帮助我们清晰地理解类与类之间的关系。在设计模式的学习中,UML类图用于描绘各个设计模式的结构和交互,如抽象工厂模式、单例模式、工厂...

    常见设计模式的解析和实现(C++)含源码

    桥接模式(Bridge)将抽象部分与实现部分分离,使它们可以独立变化;组合模式(Composite)将对象组合成树形结构,表现整体与部分的关系;外观模式(Facade)为子系统提供一个统一的接口;享元模式(Flyweight)通过...

    尚硅谷设计模式源码笔记课件.zip

    单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等 3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧 课程内容和目标 本课程是使用Java来讲解...

    设计模式教程

    这份“设计模式教程”包含了丰富的资源,包括详细的PPT教程、每种模式的源码实现以及UML类图,为学习者提供了一个全面理解设计模式的平台。 1. **PPT教程**: PPT教程通常会涵盖设计模式的基本概念,例如单例模式...

    设计模式实训教程 源码和UML图

    3. **结构型设计模式**:包括适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式关注于如何组织类和对象,以...

    java代码-23种设计模式(包含uml)

    这个压缩包包含了23种经典的设计模式,每个模式都配以Java源码和UML类图,为学习者提供了直观的理解方式。 首先,让我们逐一了解这23种设计模式: 1. 单例模式:确保一个类只有一个实例,并提供全局访问点。 2. ...

    Head First设计模式和HeadFirst in java 源码以及23种设计模式关系图

    《23种经典设计模式UML类图汇总.chm》文件很可能包含了这23种设计模式的统一建模语言(UML)类图,UML是一种图形化的表示方式,用于可视化系统的设计和结构,包括类、接口、协作和用例等元素。通过类图,我们可以...

    spring源码UML图

    在Spring框架的源码分析中,UML图能够帮助我们清晰地理解类与类之间的关系,如继承、关联、依赖等,从而更深入地理解其内部工作原理。 首先,"spring源码UML图"通常包括以下几种类型的UML图: 1. 类图(Class ...

    [结构型模式] 代理模式的理解

    概念图可能通过图形化的方式展示了代理模式的基本结构和工作流程,而类图则使用UML(统一建模语言)展示了代理类和被代理类之间的继承或关联关系,以及它们的方法定义。 代理模式的应用场景包括: 1. 远程代理:...

    Java设计模式(第二版)中文版包含课件源码

    在Java中,设计模式主要分为三大类:创建型模式(如单例模式、工厂模式、抽象工厂模式、建造者模式和原型模式)、结构型模式(如适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式和代理模式)以及行为...

    C#设计模式随书源码(光盘内容)

    结构型模式关注如何组合对象和类,如装饰者模式、代理模式;行为型模式关注对象间通信,如策略模式、观察者模式。在这个文件夹中,读者可以找到每个模式的完整实现,通过运行和调试代码来加深理解。 学习这些源码...

    GOF23种设计模式

    这些设计模式的UML类图和源码可以帮助我们更好地理解和应用这些模式。通过学习和实践这些模式,我们可以编写出更灵活、可扩展和易于维护的代码。文档则提供了关于如何在实际项目中应用这些模式的指导和示例,对于...

    极客班C++设计模式课件资料.zip

    它们还会展示典型的UML类图,帮助理解模式的静态结构。此外,PPT可能还会通过代码示例来展示如何在C++中应用这些模式,这有助于学习者更好地掌握其实现细节。 学习C++设计模式不仅可以提升编程技能,还能培养良好的...

    心得体会之java设计模式

    而《java设计模式讲解.ppt》可能是对这些模式的详细解读,可能包括每个模式的定义、UML类图、实现示例以及如何在Java项目中应用它们。例如,单例模式确保一个类只有一个实例,常用于配置管理或线程池;工厂方法模式...

    分析 Spring 可用的 UML

    Rational Rose作为一款强大的UML工具,不仅支持类图和序列图的绘制,还提供了逆向工程功能,可以从已有的源代码中生成UML模型,这对于理解和学习复杂的框架源码非常有帮助。SpringUML.mdl文件就是Rational Rose逆向...

    设计模式可复用面向对象软件的基础 源代码

    在"Design Patterns: Elements of Reusable Object-Oriented Software"中,GOF不仅详细阐述了这些模式,还提供了典型的UML类图和交互图,以及每种模式的动机、参与者、协作、实现和效果。源代码包中的"DPCPP"很可能...

    图解Java设计模式(一)

    单例模式的8种实现方式、工厂模式的3种实现方式、适配器模式的3种实现、代理模式的3种方式、深拷贝等3) 如果你想写出规范、漂亮的程序,就花时间来学习下设计模式吧课程内容和目标本课程是使用Java来讲解设计模式,...

    Java设计模式精讲1

    结构型模式涉及类和对象的组合,它能够帮助我们将不同的类和对象组合成更大的结构,如适配器、桥接、组合、装饰者、外观、享元和代理模式。行为型模式主要关注对象间的通信,通过模式使这些通信更加清晰和灵活,例如...

Global site tag (gtag.js) - Google Analytics