代理,顾名思义!
日常生活中的代理商等,都是对代理的诠释!
为其它对象提供一种代理以控制对这个对象的访问.
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#中运用代理模式。 代理模式的主要思想是为一个对象提供一个替身或代理,以便控制对这个对象的访问。代理对象在客户端和目标对象之间起...
深信服网闸代理模式配置是一项关键的安全管理任务,它涉及到网络访问控制和数据传输的安全性。网闸,全称为“安全隔离与信息交换系统”,主要用于实现不同安全等级网络之间的安全隔离,同时满足数据交换的需求。以下...
CAS代理模式是CAS系统中的一个重要特性,它允许授权用户通过代理凭证来访问受保护的资源,而无需再次进行身份验证。这种模式在多服务环境中特别有用,因为用户只需登录一次,之后可以访问所有关联的服务。 在Yale ...
代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端和目标对象之间起到中介的作用,可以实现额外的功能,比如监控、权限控制、事务管理等,而客户端无需关心这些细节。...
代理模式是一种常用的设计模式,它在软件开发中起到了中介或者代表的作用,允许我们通过一个对象来控制对另一个对象的访问。在Java和Spring框架中,动态代理更是扮演着重要角色,尤其是在实现面向切面编程(AOP)时...
设计模式之代理模式 代理模式是结构型设计模式之一,它提供了一个对象的代理对象,以控制对原对象的访问。代理对象可以在客户端和目标对象之间起到中介的作用,可以通过代理对象去掉客户不能看到的内容和服务或者...
### 代理模式 Proxy Pattern #### 概念定义 代理模式是一种结构型设计模式,它允许程序员为某对象创建一个代理对象来控制对该对象的访问。简单来说,就是在不修改原始类的基础上,通过引入代理对象来扩展类的行为...
代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,从而在客户端与目标对象之间插入一层间接性。这层间接性提供了多种优势,包括但不限于远程访问、延迟加载、安全控制、性能优化等。代理模式的核心...
代理模式是一种设计模式,它允许我们为一个对象创建一个代理对象,这个代理对象在客户端与目标对象之间起到中介的作用,可以增强或修改目标对象的行为,同时保持相同的接口。在Java中,我们可以使用JDK的动态代理...
静态代理是传统的代理模式实现,需要为每个目标类创建一个代理类,代理类和目标类实现相同的接口。静态代理的优点是代码清晰,但缺点是当需要代理的类增多时,代理类的数量也会同步增加,代码维护成本较高。 **6. ...
7. **开发实践**:在实际开发中,代理模式广泛应用于远程代理(如RPC)、安全代理(控制访问权限)、缓存代理(提高性能)以及智能引用(跟踪对象使用情况)等方面。 8. **代码实现细节**:`OrderProxy`类中的构造...
适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式(11): 策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、...
本实例"socket通信NIO代理模式demo"将展示如何利用NIO来构建一个高性能的代理服务器。 代理模式是一种设计模式,它允许我们创建一个代理对象来控制对原对象的访问。在NIO代理模式中,代理服务器作为客户端与目标...
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、...
Java动态代理模式是一种设计模式,它允许在运行时创建具有相同接口的新对象,该对象能够作为其他对象的代理,执行额外的任务,如日志记录、性能监控或安全控制。动态代理通常利用Java的反射API来实现,使得我们无需...
### Centos7虚拟机配置代理 #### 一、概述 在复杂的网络环境中,为了能够连接外部网络并进行软件包的下载等操作,通常需要对Centos7虚拟机进行代理配置。若未配置代理,则虚拟机可能无法访问互联网,进而影响正常...
结构型模式(7种):适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。 行为型模式(11种):策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态...
8 代理模式 9 装饰模式 10 原型模式 11 委派模式 12 适配器模式 设计模式综合运用 1 门面+模版方法+责任链+策略 2 门面+模版方法+责任链+策略+工厂方法 3 动态代理+Spring AOP 4 责任链模式进阶 Spring Framework...