设计模式
2020-05-19 09:56:11 0 举报
AI智能生成
常用设计模式
作者其他创作
大纲/内容
2、工厂模式
隐藏了复杂的实现流程、只关心结果,生产和消费解耦
简单工厂模式
工厂功能太杂,需要细分;
工厂方法模式
利端:各个专业工厂进行了拆分;弊端:客户端需要知道,自己的产品需要什么工厂生产
抽象工厂模式
客户不需要知道需要什么工厂,使用默认的工厂;对于各个工厂也进行了拆分;抽象工厂带有了逻辑,对工厂进行分配
3、单例模式
什么是单例模式:保证从系统启动到系统终止,全过程只会产生一个实例
为什么要用单例模式:当我们在应用中遇到功能性冲突的时候,需要使用单例模式
如何实现单例模式:单例模式的7种写法
关键在于解决线程安全问题和性能问题
4、解决安全问题和性能问题:静态内部类单例模式:如果没有调用静态方法来获取实例,方法内的逻辑不会执行不会分配空间,节省了空间
例子
数据库连接池
配置文件
6、策略模式
例子
spring jdbc RowMap
jdbc 驱动标准
实现过程策略不同,最终实现的功能相同
9、模板模式
固定的执行流程称为“模板”
运行过程中确定固定流程中的细微差别
1、代理模式
特点
具有:执行者、被代理人
对被代理人来说,这件事一定要做,但自身不想做或没时间做,找代理
需要或取代被代理的个人资料
原理
1、拿到被代理对象的引用
2、jdk代理重新生成一个类,同时实现我们给的代理对象所实现的接口
cgLib可以代理对象的原理:设定一个子类集成被代理的对象
cgLib和jdk代理都是通过子类或接口构造代理,然后调用父类方法
3、把被代理对象的引用的拿到了
4、重新动态生成一个class字节码
字节码重组
5、进行编译
字节码导入jvm转为机器码,进行运行
关心过程
例子
spring事务
日志代理
希望在某些类调用的时候进行日志打印
切面的思想
实现:jdk动态代理、cgLib动态代理
7、装饰者模式
5、委派模式
特点
类似中介的功能(委托机制)
不关心过程,只关心结果
持有被委托人的引用
目的
隐藏实现
应用
IOC容器中的Register
例子
项目经理和所属员工的关系,经理调用员工的方法
8、原型模式
数据内容相同,对象实例不同,避免使用反射手动clone对象
浅克隆
实现cloneable接口
深克隆
序列化为字节码+反序列化
关心结果
应用
FastJSON
反序列化为java对象
ORM框架把数据行转为java对象
类装载到jvm的过程
1、从上往下, 声明在前,使用在后
2、先属性,后方法:方法中的逻辑,要在调用时候才执行、内存才分配
3、先静态,后动态:不管class有没有实例化,static静态快总会在classLoader执行完后,就加载完毕
0 条评论
下一页