博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
静态代理模式
阅读量:5311 次
发布时间:2019-06-14

本文共 1410 字,大约阅读时间需要 4 分钟。

如果小A要结婚,那么他就需要做布置结婚现场,与新娘结婚,最后收拾现场。


如果使用静态代理模式解决思路:如果小A要结婚,可以找一个婚庆公司,婚庆公司的职责就是负责布置结婚现场,和最后的收拾现场,而小A就只要负责结婚。


从这两段话中,我们可以看出,小A和婚庆公司的目的都是为了结婚而做事情,那么在Java我们就一个把结婚这个事情定义成一个接口,小A和婚庆公司都有完成结婚这个事情。婚庆公司完成结婚现场布置,和最后收拾线程,而小A只负责和新娘结婚。

在静态代理中,有了接口,我们还需要一个真实角色和代理角色。结婚既然接口,那么小A固然就是一个真实角色,而婚庆公司就是一个代理角色,因为真正结婚的是小A,而完成结婚之外的事情,比如现场布置的是婚庆公司。也就是说代理角色是为真正角色服务的,所以,在代理角色中,我们需要有一个真正角色的引用。

那么我们首先创建一个接口

Static Proxy:

/** * @description: 静态代理的接口 * @author: TateLiao * @Date: 2019/2/28 */public interface StaticProxy { void marriage(); }
 

真实角色:小A

/** * @description: 真实角色 * @author: TateLiao * @Date: 2019/2/28 */public class AUser implements StaticProxy{ @Override public void marriage() { System.out.println("小A正在结婚"); } }
 

代理角色:婚庆公司

/** * @description: 代理角色 * @author: TateLiao * @Date: 2019/2/28 */public class Company implements StaticProxy { private AUser aUser; public Company(AUser aUser) { this.aUser = aUser; } private void before() { System.out.println("布置现场!"); } private void after() { System.out.println("收拾现场!"); } @Override public void marriage() { before(); //小A结婚 aUser.marriage(); after(); } }
 

最后测试一下

/** * @description: 测试静态代理模式 * @author: TateLiao * @Date: 2019/2/28 */public class Test { public static void main(String[] args) { //小A对象 AUser aUser = new AUser(); //婚庆公司对象 Company company = new Company(aUser); //执行结婚对象 company.marriage(); } }
 

执行结果:

布置现场!小A正在结婚收拾现场!

转载于:https://www.cnblogs.com/min-yu/p/10904874.html

你可能感兴趣的文章
jenkins搭建
查看>>
C#中使用Split分隔字符串的技巧
查看>>
eclipse的调试方法的简单介绍
查看>>
加固linux
查看>>
IPSP问题
查看>>
10.17动手动脑
查看>>
WPF中Image显示本地图片
查看>>
Windows Phone 7你不知道的8件事
查看>>
实用拜占庭容错算法PBFT
查看>>
java的二叉树树一层层输出,Java构造二叉树、树形结构先序遍历、中序遍历、后序遍历...
查看>>
php仿阿里巴巴,php实现的仿阿里巴巴实现同类产品翻页
查看>>
Node 中异常收集与监控
查看>>
七丶Python字典
查看>>
Excel-基本操作
查看>>
面对问题,如何去分析?(分析套路)
查看>>
Excel-逻辑函数
查看>>
面对问题,如何去分析?(日报问题)
查看>>
数据分析-业务知识
查看>>
nodejs vs python
查看>>
poj-1410 Intersection
查看>>