静态代理总结:
真实对象和代理对象都要实现同一个接口。
代理对象要代理真实的角色

好处:
可以对真实对象的方法进行扩充
不用再去在真实对象中的方法进行修改。

举例

我们以我们结婚为例。我们结婚通常都会去找婚庆中介,然后让他们给我们负责布置婚礼,我们只要去参加婚礼就可以了。所以这里的真实对象是我们人,而代理对象很明显就是婚庆公司。我们要做的事是结婚,所以接口的方法是结婚。

接口:

package com.yzx.proxy;/**** 结婚接口*/
public interface Marry {public void happyMarry();}

真实对象新郎

package com.yzx.proxy;public class Bridegroom implements Marry{@Overridepublic void happyMarry() {System.out.println("新郎结婚非常的开心、幸福。");}}

婚庆公司代理

package com.yzx.proxy;/*** 代理对象:婚庆公司*/
public class WeddingProxy implements Marry{private Marry bridegroom;public WeddingProxy(Marry bridegroom) {this.bridegroom = bridegroom;}@Overridepublic void happyMarry() {before();bridegroom.happyMarry();after();}private void before() {System.out.println("布置婚礼,很忙碌。");}private void after() {System.out.println("婚礼结束收尾款,很头大。");}}

这里婚庆公司在结婚这件事上还有了婚前布置和婚后收费,而真正结婚的人必须要新郎到场才能进行结婚。

测试

public static void main(String[] args) {// 创建代理对象WeddingProxy weddingProxy = new WeddingProxy(new Bridegroom());// 执行经过代理后的结婚方法weddingProxy.happyMarry();}

结果

Threa中的静态代理

上述中的测试代码可以简化

public class StaticProxy {public static void main(String[] args) {// 创建代理对象// WeddingProxy weddingProxy = new WeddingProxy(new Bridegroom());// 执行经过代理后的结婚方法// weddingProxy.happyMarry();new WeddingProxy(new Bridegroom()).happyMarry();}}

通过与Thread创建线程相比

new Thread(一个继承了Runnable接口的实现类).start();

可以得出,Thread使用了静态代理。

Thread中的静态代理相关推荐

  1. 代理模式中的静态代理

    举个例子:人到了适婚年龄,父母总是迫不及待希望早点抱孙子.而现在社会的人在各种压力之下,都选择晚婚晚育.于是着急的父母就开始到处为自己的子女相亲,比子女自己还着急.这个相亲的过程,就是一种我们人人都有 ...

  2. 多线程中的静态代理模式

    静态代理的例子: 1 /** 2 * 1.真实角色 3 * 2.代理角色 4 * 3.共同实现的接口 5 * @author tele 6 * 7 */ 8 public class StaticPr ...

  3. Spring AOP中的静态代理和动态代理的原理和实践

    对于最近博主最近写博客的兴致大发,我也在思考:为什么而写博客?在互联网时代,无论你是牛人大咖,还是小白菜鸟,都有发表自己看法的权利.无论你是对的还是错的,都会在这个平台上找到答案.所以,我会尽可能去写 ...

  4. 带你了解代理模式中的静态代理和动态代理以及cgilib代理^_^

    代理模式 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能. 这种类型的设计模式属于结构型模式. 在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口. 这样的意图是: ...

  5. Spring中的静态代理和动态代理

    一.什么是代理? 代理是一种设计模式,提供了对目标对象另外的访问方式,即通过代理对象访问目标对象.可以不修改目标对象,对目标对象功能进行拓展.在我们学习Spring的时候就会发现,AOP(面向切面编程 ...

  6. 一篇文章让你搞懂Java中的静态代理和动态代理

    文章目录 什么是代理模式 代理的优缺点 静态代理 动态代理 InvocationHandler 接口 和 invoke 方法介绍 静态代理和动态代理的区别 什么是代理模式 代理模式是常用的java设计 ...

  7. Java中的静态代理设计模式

    AOP(Aspect Oriented Programmimg) 面向切面编程 核心:spring中的代理设计模式 1.静态代理设计模式 service 核心: 核心功能:一定要有的功能,没有的话业务 ...

  8. Spring源码深度解析(郝佳)-学习-源码解析-创建AOP静态代理实现(八)

    继上一篇博客,我们继续来分析下面示例的 Spring 静态代理源码实现. 静态 AOP使用示例 加载时织入(Load -Time WEaving,LTW) 指的是在虚拟机载入字节码时动态织入 Aspe ...

  9. Java知识点26——模拟12306买票过程、模拟龟兔赛跑的过程、静态代理例子

    模拟12306买票过程 共享资源,并发(线程安全) Web12306.java /*** 共享资源,并发(线程安全)* @author Administrator**/ public class We ...

  10. 设计模式|代理模式、以《安家》为模型轻松理解静态代理和动态代理

    目录 代理模式概念 代理模式实例 静态代理 动态代理 代理模式概念 代理模式是设计模式中运用较广泛且容易理解的一个.代理模式的概念是为其他对象提供一个代理,以控制这个对象的访问,代理对象在客户端和目标 ...

最新文章

  1. Jeff Dean亲自揭秘谷歌下一代AI架构:通用、稀疏且高效,网友不买帐:毫无新意...
  2. 阿里JAVA 开发手册----整理
  3. 部门角色权限rbac_k8s十 | 一文读懂基于角色的权限控制RBAC
  4. Shell简介:什么是Shell,Shell命令的两种执行方式
  5. js(Dom+Bom)第三天(1)
  6. ajax渲染后的点击事件,在ajax调用后渲染“喜欢”按钮
  7. Hibernate中inverse属性与cascade属性
  8. 桔子浏览器电脑版看不了视频怎么办 视频无法播放怎么解决
  9. 微服务开发利器:ELK进行日志采集以及统一处理
  10. ashx获取input file 文件_前端战五渣学前端——FileReader预览本地文件
  11. Android中startActivity中的permission检测与UID机制
  12. PHP不支持多线程,有时候处理问题不是那么爽,今天谈论一下PHP定时执行的方法...
  13. 配置可访问外网静态IP
  14. C 语言中结构体中成员所占内存的大小
  15. MATLAB中神经网络工具箱的使用
  16. oracle rman delete backupset,RMAN Crosscheck后delete obsolete遇到RMAN-06091的解决
  17. 人脸识别系统——Face recognition 人脸识别
  18. [Splay伸展树]splay树入门级教程
  19. 【BZOJ4864】【BeiJing 2017 Wc】神秘物质(Splay)
  20. 2021年深圳考点临床医师计算机考试准考证

热门文章

  1. Hyper-V网络虚拟化--VM之间拷贝速度慢
  2. 我们的产品工艺演示动画
  3. linux定时备份Mysql
  4. Java咖啡馆(8)——大话面向对象(下)
  5. 72. 文件上传(1)
  6. 《数学之美》—矩阵运算和文本处理中的两个分类问题
  7. [2019杭电多校第三场][hdu6609]Find the answer(线段树)
  8. 人民邮电出版社图灵公司征求《Windows Communication Foundation Unleashed》译者
  9. Go基础系列:接口类型断言和type-switch
  10. HDU3032_NimOrNotNim解题报告