java 编程基础 Class对象 反射:代理模式和静态代理
2021/5/16 22:25:22
本文主要是介绍java 编程基础 Class对象 反射:代理模式和静态代理,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
生活中的代理
类(对象)代理模式
代理模式是面向对象编程中比较常见的设计模式。- 1. 用户只关心接口功能,而不在乎谁提供了功能。上图中接口是 Subject
- 2. 接口真正实现者是上图的 RealSubject,但是它不与用户直接接触,而是通过代理。
- 3. 代理就是上图中的 Proxy,由于它实现了Subject接口,所以它能够直接与用户接触。
- 4. 用户调用 Proxy 的时候,Proxy 内部调用了 RealSubject。所以,Proxy 是中介者,它可以增强 RealSubject 操作。
静态代理模式
使用播放电影案例说明
用户--->加广告的电影(电影)--->真正的电影(电影接口)
1,定义一个电影接口
package com.zmd.staticProxy; /** * @ClassName Movie * @projectName: object1 * @author: Zhangmingda * @description: XXX * date: 2021/5/16. */ public interface Movie { /** * 接口中定义的方法,认都是public (公开)、abstract (抽象) 的 * 播放电影的方法: */ void play(); }
2,定义真的电影《战狼》实现Movie接口
package com.zmd.staticProxy; public class ZhanlangMovie implements Movie{ public void play(){ System.out.println("战狼播放中..."); } }
3,定义加广告的电影(电影城加工后),实现接Movie口
package com.zmd.staticProxy; public class RealMovie implements Movie{ private Movie movie; public RealMovie(Movie movie) { this.movie = movie; } public void play(){ System.out.println(" 欢迎 购买爆米花 ,电影要开始喽..."); movie.play(); System.out.println("下期 《反贪风暴》 即将开播,敬请期待"); } }
4,定义播放器,播放电影
package com.zmd.staticProxy; public class MovieTest { public static void playMovie(Movie movie){ movie.play(); } public static void main(String[] args) { playMovie(new RealMovie(new ZhanlangMovie())); } }
这篇关于java 编程基础 Class对象 反射:代理模式和静态代理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南
- 2024-09-26Springboot微服务资料入门教程