`

设计模式——代理模式

    博客分类:
  • java
阅读更多

代理模式:

为其他对象提供一种代理以控制对这个对象的访问。

代理模式一般分为四种:

  1. 远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象在于不同地址空间的事实。
  2. 虚拟代理:根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真是对象。如打开HTML网页时,只看到所有文字,图片却一张张下载后才能看到。那些未打开的图片框,通过虚拟代理来替代真实图片,代理存储了真实图片的路径和尺寸。
  3. 安全代理:用来控制真实对象访问时的权限。
  4. 智能指引:当调用真实对象时,代理处理另外一些事。

类图: 其中

Subject类定义了公用接口

RealSubject和Proxy实现Subject,这样在任何使用RealSubject的地方都可以使用Proxy

实例:

吕秀才让燕小六代其向郭芙蓉求婚。

Ted让Marshall代其向Robin送鲜花、巧克力、洋娃娃。

类图:

代码

IGiveGift接口,相当于Subject

package cn.edu.tju.proxyPattern;

//Subject接口
public interface IGiveGift {
	
	public void giveDolls();
	public void giveFlowers();
	public void giveChocolate();

}
 

Persuit类,相当于RealSubject

package cn.edu.tju.proxyPattern;

//RealSubject类
public class Persuit implements IGiveGift{

	private SchoolGirl mm;
	
	public Persuit(SchoolGirl mm){
		this.mm = mm;
	}
	@Override
	public void giveChocolate() {
		// TODO Auto-generated method stub
		System.out.println(mm.getName() + " 送你巧克力");
	}

	@Override
	public void giveDolls() {
		// TODO Auto-generated method stub
		System.out.println(mm.getName() + " 送你洋娃娃");
	}

	@Override
	public void giveFlowers() {
		// TODO Auto-generated method stub
		System.out.println(mm.getName() + " 送你鲜花");
	}

}
 

Proxy类

package cn.edu.tju.proxyPattern;

//Proxy类
public class Proxy implements IGiveGift{
	
	private Persuit persuit;
	
	public Proxy(SchoolGirl mm){//Proxy与Persuit是关联关系,体现在当实例化Proxy的同时实例化Persuit
		this.persuit = new Persuit(mm);
	}

	@Override
	public void giveChocolate() {
		// TODO Auto-generated method stub
		persuit.giveChocolate();
	}

	@Override
	public void giveDolls() {
		// TODO Auto-generated method stub
		persuit.giveDolls();
	}

	@Override
	public void giveFlowers() {
		// TODO Auto-generated method stub
		persuit.giveFlowers();
	}

}
 

SchoolGir类,辅助

package cn.edu.tju.proxyPattern;

//辅助类
public class SchoolGirl {
	
	private String name;

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	

}
 

Test类

package cn.edu.tju.proxyPattern;

//测试类
public class Test {
	
	public static void main(String[] args){
		SchoolGirl mm = new SchoolGirl();
		mm.setName("Robin");
		Proxy proxy = new Proxy(mm);
		proxy.giveChocolate();
		proxy.giveDolls();
		proxy.giveFlowers();
	}

}
 
分享到:
评论

相关推荐

    基于Java的设计模式-代理模式demo的实现(高分课设)

    基于Java的设计模式——代理模式demo的实现(高分课设)个人经导师指导并认可通过的98分大作业设计项目,适用人群:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业或毕业设计,作为“参考资料”使用...

    Java设计模式——代理设计模式(静态代理和动态代理)

    在Java编程中,设计模式是一种解决常见问题的模板或最佳实践,它可以帮助开发者编写更加灵活、可维护和可扩展的代码。代理设计模式是其中的一种,它的主要作用是在...在实际开发中,应根据项目需求选择合适的代理模式。

    设计模式实现——代理模式

    **设计模式实现——代理模式** 在软件工程中,设计模式是一种通用可重用的解决方案,它描述了在特定上下文中经常出现的问题以及该问题的解决方案。代理模式是设计模式的一种,它提供了一种对目标对象的间接访问方式...

    设计模式——刘伟

    6. **代理模式**:为其他对象提供一种代理以控制对该对象的访问。代理可以在目标对象前增加额外的功能,如缓存、日志记录、事务控制等。 7. **建造者模式**:将一个复杂对象的构建与其表示分离,使得同样的构建过程...

    设计模式——GFour

    《设计模式——GFour》是一本深受IT从业者喜爱的经典书籍,尤其在C++开发者中具有广泛影响力。设计模式是软件工程领域中的一种最佳实践,它总结了在特定情境下解决问题的常见方法,使得代码可读性更强,复用性更高,...

    JAVA设计模式(代理模式)

    **Java设计模式——代理模式详解** 代理模式是软件设计模式中的一个重要组成部分,它在Java编程中扮演着举足轻重的角色。代理模式的核心思想是为一个对象提供一个替身,这个替身即代理对象,代理对象可以控制对原...

    设计模式——原版的设计模式

    代理模式为其他对象提供一种代理以控制对这个对象的访问;组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。 3. **行为型模式**:这类模式涉及对象之间的责任分配。命令模式将请求封装为一个对象,从而...

    设计模式——装饰模式

    装饰模式是一种设计模式...通过阅读和理解《设计模式:可复用面向对象软件的基础》等经典书籍,以及像博客“设计模式——装饰模式”这样的在线资源,我们可以深入掌握并灵活运用装饰模式,提高代码的可维护性和扩展性。

    设计模式-Java语言中的应用(pdf)

    《设计模式——Java语言中的应用》是一本专为Java开发者深入理解面向对象设计而编写的经典书籍。设计模式是软件工程领域中经过实践验证的、解决常见问题的有效方案,它们代表了在特定上下文中,针对特定问题的最优...

    浅析Java设计模式【3】——代理.pdf

    ### 浅析Java设计模式【3】——代理 #### 一、代理模式概述 代理模式是一种行为型设计模式,主要用于在客户端与目标对象之间起到一个中介的作用,通过代理对象来控制对目标对象的访问。代理模式的核心在于它可以...

    设计模式——可复用面向对象软件的基础(1)

    在《设计模式——可复用面向对象软件的基础》这本书中,作者Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides(合称GoF)首次提出了23种面向对象设计模式。这些模式涵盖了不同设计场景,如创建型模式、...

    iOS设计模式——委托(delegate)例子

    在iOS开发中,设计模式是实现高效、可维护和可扩展代码的关键元素。本文将重点关注“委托”(Delegate)设计模式,这是一种常见的模式,用于在对象之间建立通信和协调行为。通过实现委托,一个对象(委托者)可以...

    C#面向对象设计模式纵横谈(13):Proxy 代理模式(结构型模式) (Level 300)

    本文将深入探讨C#中的一个关键设计模式——代理模式,它属于结构型模式的一种,适用于管理和控制对象的访问。我们将从概念、分类、实现方式以及实际应用等方面进行详细的讲解。 1. **代理模式概念**: 代理模式是一...

    设计模式之美——教你写出高质量代码

    "设计模式之美——教你写出高质量代码"这个主题旨在帮助开发者更好地理解和应用设计模式,从而提升代码的质量和可维护性。设计模式不仅对面试有所帮助,也是职场发展中的必备技能,无论你使用哪种开发语言。 设计...

    设计模式——JAVA.docx

    ### JAVA设计模式总结之23种设计模式及六大原则 #### 一、设计模式之六大原则 ##### 总原则:开闭原则(Open Close Principle) 开闭原则是设计模式中最核心的原则之一,它强调的是软件实体(类、模块、函数等)...

    Python设计模式之代理模式实例详解

    设计模式——代理模式 代理模式(Proxy Pattern):为其他对象提供一种代理以控制对这个对象的访问 实现:戴励 替 卓贾易 送礼物给 娇娇 模型: #公共接口类 class InterFace: def request(self): pass #真实类 cla

Global site tag (gtag.js) - Google Analytics