`
zcw_java
  • 浏览: 303805 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

7、代理模式

 
阅读更多
代理,顾名思义!
日常生活中的代理商等,都是对代理的诠释!

为其它对象提供一种代理以控制对这个对象的访问.
1,远程代理--也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实.

2,虚拟代理--是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象.

3,安全代理--用来控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候.

4,智能指引--是指当调用真实对象时,代理处理另外一些事.

现在一个例子来分析!!
漂亮女孩实体
public class BeautifulGirl {
	private String name;
	private char sex;
	
	
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public char getSex() {
		return sex;
	}
	public void setSex(char sex) {
		this.sex = sex;
	}
}

接口类(一组行为)
public interface GiveGift {
	//送洋娃娃
	void GiveDolls();
	//送花
	void GiveFlowers();
	//送巧克力
	void GiveChocolate();
}

一个男孩Jason他拥有一些行为
public class Jason implements GiveGift {
	private BeautifulGirl girl;
	
	public Jason(){}
	public Jason(BeautifulGirl bgirl){
		this.girl = bgirl;
	}
	
	@Override
	public void GiveChocolate() {
		System.out.println("Jason送巧克力给"+this.girl.getName());
	}

	@Override
	public void GiveDolls() {
		System.out.println("Jason送洋娃娃给"+this.girl.getName());
	}

	@Override
	public void GiveFlowers() {
		System.out.println("Jason送花给"+this.girl.getName());
	}

}

另外一个男孩Jack,他也拥有一些行为,他要去帮Jason去送花等!但他自己也有一些特别的行为
public class Jack implements GiveGift {
	public Jason jason;
	
	public Jack(){}
	public Jack(BeautifulGirl girl){
		this.jason = new Jason(girl);
	}
	@Override
	public void GiveChocolate() {
		System.out.println("Jack-GiveChocolate()进入");
		jason.GiveChocolate();
	}

	@Override
	public void GiveDolls() {
		System.out.println("Jack-GiveDolls()进入");
		jason.GiveDolls();
	}

	@Override
	public void GiveFlowers() {
		System.out.println("Jack-GiveFlowers()进入");
		jason.GiveFlowers();
	}
	
	public void GiveCoffee(){
		System.out.println("Jack主动送咖啡");
	}
	
}


测试:
public class Test {
	public static void main(String[] args) {
		BeautifulGirl girl = new BeautifulGirl();
		girl.setName("Tina");
		
		Jack man = new Jack(girl);
		man.GiveCoffee();
		man.GiveChocolate();
		man.GiveDolls();
		man.GiveFlowers();
	}
}

输出:
Jack主动送咖啡Jack-GiveChocolate()进入
Jason送巧克力给Tina
Jack-GiveDolls()进入
Jason送洋娃娃给Tina
Jack-GiveFlowers()进入
Jason送花给Tina

第一次送咖啡是Jack代表自己送给Tina的.
后面三次同样是Jack去送,但代表的不是自己而是Jason

看懂了吗?继续加油
分享到:
评论

相关推荐

    设计模式--代理模式

    代理模式是一种常用的设计模式,它在软件开发中扮演着重要角色,允许我们通过一个代理类来控制对原对象的访问。在《设计模式:可复用面向对象软件的基础》(通常称为GoF设计模式)中,代理模式被定义为“为其他对象...

    C#设计模式—代理模式应用实例

    代理模式是其中一种,它在软件设计中扮演着重要角色。本实例将详细阐述如何在C#中运用代理模式。 代理模式的主要思想是为一个对象提供一个替身或代理,以便控制对这个对象的访问。代理对象在客户端和目标对象之间起...

    网闸代理模式配置.docx

    深信服网闸代理模式配置是一项关键的安全管理任务,它涉及到网络访问控制和数据传输的安全性。网闸,全称为“安全隔离与信息交换系统”,主要用于实现不同安全等级网络之间的安全隔离,同时满足数据交换的需求。以下...

    CAS代理模式

    CAS代理模式是CAS系统中的一个重要特性,它允许授权用户通过代理凭证来访问受保护的资源,而无需再次进行身份验证。这种模式在多服务环境中特别有用,因为用户只需登录一次,之后可以访问所有关联的服务。 在Yale ...

    代理模式java代码 Proxy(4)

    代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用,可以实现额外的功能,比如监控、权限控制、事务管理等,而客户端无需关心这些细节。...

    代理模式及动态代理资料和源代码

    代理模式是一种常用的设计模式,它在软件开发中起到了中介或者代表的作用,允许我们通过一个对象来控制对另一个对象的访问。在Java和Spring框架中,动态代理更是扮演着重要角色,尤其是在实现面向切面编程(AOP)时...

    设计模式10代理模式PPT学习教案.pptx

    设计模式之代理模式 代理模式是结构型设计模式之一,它提供了一个对象的代理对象,以控制对原对象的访问。代理对象可以在客户端和目标对象之间起到中介的作用,可以通过代理对象去掉客户不能看到的内容和服务或者...

    代理模式 Proxy Pattern

    ### 代理模式 Proxy Pattern #### 概念定义 代理模式是一种结构型设计模式,它允许程序员为某对象创建一个代理对象来控制对该对象的访问。简单来说,就是在不修改原始类的基础上,通过引入代理对象来扩展类的行为...

    4代理模式1

    代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,从而在客户端与目标对象之间插入一层间接性。这层间接性提供了多种优势,包括但不限于远程访问、延迟加载、安全控制、性能优化等。代理模式的核心...

    代理模式,JDK动态代理,SpringAOP来龙去脉

    代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端与目标对象之间起到中介的作用,可以增强或修改目标对象的行为,同时保持相同的接口。在Java中,我们可以使用JDK的动态代理...

    动态代理+静态代理+单利模式+定时任务的SSM+maven框架

    静态代理是传统的代理模式实现,需要为每个目标类创建一个代理类,代理类和目标类实现相同的接口。静态代理的优点是代码清晰,但缺点是当需要代理的类增多时,代理类的数量也会同步增加,代码维护成本较高。 **6. ...

    代理模式java代码 Proxy(3)

    7. **开发实践**:在实际开发中,代理模式广泛应用于远程代理(如RPC)、安全代理(控制访问权限)、缓存代理(提高性能)以及智能引用(跟踪对象使用情况)等方面。 8. **代码实现细节**:`OrderProxy`类中的构造...

    23种设计模式详解PDF

    适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式(11): 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、...

    socket通信NIO代理模式demo实例

    本实例"socket通信NIO代理模式demo"将展示如何利用NIO来构建一个高性能的代理服务器。 代理模式是一种设计模式,它允许我们创建一个代理对象来控制对原对象的访问。在NIO代理模式中,代理服务器作为客户端与目标...

    23种设计模式 -设计模式图解.7z

    结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...

    JAVA动态代理模式.pdf

    Java动态代理模式是一种设计模式,它允许在运行时创建具有相同接口的新对象,该对象能够作为其他对象的代理,执行额外的任务,如日志记录、性能监控或安全控制。动态代理通常利用Java的反射API来实现,使得我们无需...

    Centos7虚拟机配置代理

    ### Centos7虚拟机配置代理 #### 一、概述 在复杂的网络环境中,为了能够连接外部网络并进行软件包的下载等操作,通常需要对Centos7虚拟机进行代理配置。若未配置代理,则虚拟机可能无法访问互联网,进而影响正常...

    java设计模式示例

    结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态...

    Java 经典设计模式讲解以及项目实战

    8 代理模式 9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+策略+工厂方法 3 动态代理+Spring AOP 4 责任链模式进阶 Spring Framework...

Global site tag (gtag.js) - Google Analytics