【设计模式】代理模式 ( 代理模式结构 | 客户端 | 主题对象 | 被代理对象 | 代理对象 )
【摘要】
文章目录
一、代理模式二、代理模式示例1、主题对象 Subject2、被代理对象 RealSubject3、代理对象 Proxy4、客户端 Client
一、代理模式
...
一、代理模式
代理模式 : 为 指定对象 提供一种代理 , 控制 对该 指定对象 的 访问 ; 代理的核心作用就是 " 控制访问 " ;
代理模式结构 : 代理模式中的元素有 客户端 , 主题对象 , 被代理对象 , 代理对象 ;
- 客户端 持有 主题对象 , 调用其方法 ;
- 代理对象 和 被代理对象 都是 主题 的子类 ;
- 代理对象 持有 被代理对象 , 可以调用 被代理对象 的方法 ;
代理模式的核心 : 代理对象 与 被代理对象 都实现同一个父类或接口 , 这样在客户端使用时 , 客户端 感觉自己与 被代理对象 沟通 , 但用户实际上与 代理对象 进行沟通 ;
二、代理模式示例
1、主题对象 Subject
/**
* 目标接口
* 代理对象 和 被代理对象 都要实现该接口
*/
public interface Subject {
void request();
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
2、被代理对象 RealSubject
/**
* 被代理对象
*/
public class RealSubject implements Subject {
@Override
public void request() {
System.out.println("被代理对象 RealSubject request()");
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
3、代理对象 Proxy
/**
* 代理对象
*/
public class Proxy implements Subject {
/**
* 代理对象中持有被代理对象的引用
* 在构造方法中注入
*/
private Subject subject;
public Proxy(Subject subject) {
this.subject = subject;
}
@Override
public void request() {
// 调用代理对象的方法时, 实际调用的是被代理对象方法
this.subject.request();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
4、客户端 Client
public class Client {
public static void main(String[] args) {
// 被代理对象
Subject realSubject = new RealSubject();
// 代理对象
Subject proxy = new Proxy(realSubject);
// 执行代理对象方法, 调用被代理对象方法
proxy.request();
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
执行结果 :
文章来源: hanshuliang.blog.csdn.net,作者:韩曙亮,版权归原作者所有,如需转载,请联系作者。
原文链接:hanshuliang.blog.csdn.net/article/details/120364213
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)