二十二 动态代理&解决网站的字符集编码问题
2024-10-08 15:21:11
设计模式:
软件开发过程中,遇到相似问题,将问题的解决方式抽取模型(套路)
单例,工厂,装饰者,适配器,动态代理
谷歌汽车场景:
谷歌汽车场景Car
- Interface Icar{ start run stop}
- final class GoogleCar implments ICar(){}
希望将谷歌Car接入到生态圈
装饰者设计模式:通过实现同一个接口完成
- 一个接口Icar,被一个final修饰的GoogleCar实现,被Mycar实现
- Mycar的构造里面传入Icar:public class MyCar implements ICar {ICar car; public MyCar(ICar car) {this.car = car;}},并且重写Icar的三个方法run,stop,start,里面调用ICar对象的三个方法
- ICar car = new MyCar(new GoogleCar());实现装饰
- 场景:二次开发的时候,无法获取源码GoogleCar,无法使用继承的情况下,要对已经存在的对象进行增强
- 前提:可以获取到被装饰的对象实现的所有接口
- 弊端:假如被装饰对象实现的接口有几百个方法,那么就要重写几百个方法,造成冗余
- 解决方法:动态代理
动态代理模式:
原理:通过虚拟机在内存中创建类似MyCar.class文件
1 要创建这个文件,要告诉虚拟机被创建的字节码文件上应该有多少方法
2 告诉虚拟机被创建的字节码上的方法如何来实现
。。。未完待续
https://www.cnblogs.com/gonjan-blog/p/6685611.html
最新文章
- ffmpeg-20160926[27]-bin.7z
- 3D Touch
- Photoshop:笔刷制作和安装
- 题目1043:Day of Week(输入日期与当前日起天数差%7,在做相关星期调整)
- 采用FirePHP调试PHP程序
- swift 取消UIButton选中高亮状态
- Python之正则表达式(re模块)
- hdu2410(水)
- 零开始:NetCore项目权限管理系统:基础框架搭建
- Html 改变原有标签属性
- vue 点击图片放大
- docker 15 dockerfile案例-CMD、ENTRYPOINT案例
- cocos2dx JS layuot纯代码实现背景颜色渐变
- Beta冲刺随笔汇总
- Codeforces Round #410 (Div. 2) B
- python变量存储和深浅拷贝
- [CF1039D]You Are Given a Tree[贪心+根号分治]
- 【刷题】BZOJ 4543 [POI2014]Hotel加强版
- swap文件查看
- Django model字段类型(转)
热门文章
- Java IO流详解(三)——字节流InputStream和OutPutStream
- Laravel 6.X + Vue.js 2.X + Element UI 开发知乎流程
- xml 写sql语句文件头
- mysqld: Can't change dir to 'D:\TONG\mysql-5.7.19-winx64\data\' (Errcode: 2 - No such file or directory)
- 解决IDEA部署web项目时,jar包拷贝不全的问题
- SpringBoot集成Freemarker前端模板
- 单元测试及框架简介 --junit、jmock、mockito、powermock的简单使用
- 02.当构造参数过多时使用builder模式
- 2 CSS盒子模型&;边框&;轮廓&;外边距&;填充&;分组嵌套&;尺寸&;display与visibility
- js里用 toLocaleString 实现给数字加三位一逗号间隔(有无小数点都适用)