代理模式的作用:为其他对象提供代理以控制对这个对象的访问.
举例: 租房子找中介的问题,中介就充当着代理的角色,代理房东把房子租出去,同时收取一定的中介费,相当于封装了房东把房子租出去的处理,同时还加上了中介自己的处理.
代理模式涉及到的角色:
-抽象角色:声明真实对象和代理对象共同的接口
-代理对象:代理对象内部含有对真实对象的引用,可以操作真实对象,代理对象提供和真实对象相同的接口,以便在任何时候都能
代替真实对象,同时代理对象在操作真实对象时,可以附加其他操作,相当于对真实对象进行了封装.
-真实对象:代理对象所代表的真实对象,是我们要真正操作的对象
以下以租房为实例,代码如下:
租房的抽象类:
public abstract class Rent {
public abstract void rent();
}
代理对象和真实对象必须都继承该抽象类,如果抽象角色是接口的话,则代理对象和真实对象
必须都实现该接口。
以下是真实对象的代码,真实对象必须和代理对象一样,继承或者实现抽象角色
public class HouseHolder extends Rent {
@Override
public void rent() {
System.out.println("从房东这里租房子");
}
}
中介作为房东的代理,在代理模式中充当的代理对象的角色,中介的代码如下:
public class ProxyRent extends Rent {
private HouseHolder obj;
@Override
public void rent() {
if (obj == null) {
obj = new HouseHolder();
}
System.out.println("中介收取中介费");
obj.rent();
}
}
根据前面的说明,代理对象持有对真实对象的引用,可以操作真实对象,所以上面的代码中
有一个对房东对象的引用。
客服端调用代理对象时的代码如下:
public class Client {
public static void main(String[] args) {
Rent rent = new ProxyRent();
rent.rent();
}
}
分享到:
相关推荐
Java设计模式——代理设计模式(静态代理和动态代理) 各种情况例子源码
//代理模式内部引用了真实角色 public void requst() { this.preRequest(); //在真实角色操作之前所附加的操作 if(null == realsubject) { realsubject = new ReallSubject(); } realsubject.requst(); // ...
NULL 博文链接:https://871656094.iteye.com/blog/2355335
自己编写的代理设计模式,示例中的代码绝对没有使用伪代码,是开发的项目真实案例,简单易懂
设计模式之代理模式_静态代理的一个java实现的demo。主类在Client中。仅代码实现,可供初学者参考使用
java 代理模式实现代码及设计详解:动态代理模式、静态代理模式
java设计模式【之】静态代理【源码】【场景:帮爸爸买菜】.rar * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法调用 * ...
静态代理总结: 优点:可以做到在符合开闭原则的情况下对目标对象进行功能扩展。 缺点:我们得为每一个服务都得创建代理类,工作量太大,不易管理。同时接口一旦发生改变,代理类也得相应修改。
此资源为文章中《代理设计模式:静态代理和动态代理的理解、实现与区别(优缺点)》与《 AOP动态代理声明式的3种配置方式过程与区别》的案例代码,可下载参考学习。
描述了安卓代理模式的动态代理和静态代理两种代理方式的使用
Java设计模式之代理模式 1.代理模式 1.1 静态代理 1.2 动态代理 1.3.代理模式使用原因和应用方面
静态代理设计模式1.1 静态代理 – 实现步骤1.2 静态代理 – 逻辑图 & 源码示例1.3 静态代理 – 优缺2. 装饰者设计模式 – 类似静态代理2.1 装饰者模式 – 实现步骤2.2 装饰者模式 – 逻辑图 & 源码示例2.3 装饰者...
设计模式之代理模式Java实现和类设计图,包括静态代理和动态代理
在代理模式中,主要有两种类型:静态代理和动态代理。 1.静态代理: 静态代理是指在编译期间就已经确定代理类和被代理类的关系,需要手动编写代理类。代理类需要实现与被代理类相同的接口,并且在代理类中持有一个被...
静态代理和动态代理简单实现代码.Proxy.其中静态代理我写了两个demo,有一个是最原始的,还有一个放在程杰的大化设计模式的代理模式写的,纯属娱乐。
资源列举了设计模式中的静态代理和动态代理的简单java实现,jdk1.8版本经过测试验证,对于想学习设计模式的童靴应该有所帮助
基本概念: 代理模式的核心作用就是通过代理,控制对对象的访问。 这跟实际中是一样的,例如说我们租房子时遇到的中介,这就是一个代理,比如有人要找中介帮忙出租房屋,那么首先处理这事的就是中介,虽然自己的...
java设计模式【之】JDK动态代理【源码】【场景:帮爸爸买菜】.rar /** * 代理模式 * 在开发者的角度来看,创建一个代理对象,提供给用户使用,避免用户直接访问真正的对象 * 在用户角度来看,就是普通的类方法...
代理模式是常用的Java 设计模式,它的特征是代理类与委托类有同样的接口,代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。代理类与委托类之间通常会存在关联关系,一个...
单例设计模式案例演示 单例模式,是一种常用的软件设计模式。通过单例模式可以保证系统中,**应用该模式的这个类只有一个实例**。即一个类只有一个对象实例。 #### 单例设计模式实现步骤 1. 将构造方法私有化,使其...