结构模式
就像建筑一样,要盖什么类型的房子,从高层、底层、叠拼别墅、独栋各种结构类型到几室几厅结构类型,
软件中结构模式表现的是面向对象的代码层次结构,前我们用MVC结构大多情况都是写的事务性脚本,就像写的是流水账,直接铺在service里面
这块模式灵活使用会使代码结构更加明晰,维护性更好。设计模式看了好多遍灵活应用却是很难,需要平时的积累和思考。
模式
代理模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、适配器模式
代理模式
分静态代理与动态代理
jdk动态代理,cglib动态代理
经典应用场景mybatis接口映射xml的SQL
桥接模式
解开抽象与实现的耦合,一个场景多个维度的组合
支付场景:不同的支付通道与支付模式的组合
组合模式
但凡能用整体与部分层次结构,都能用此模式,进行处理,比如 决策树、AST抽象语法树、菜单、目录
场景:营销决策树、网站菜单目录
装饰模式
在不改动原有功能的基础上添加代码功能
场景:输入输出流
外观模式
隔离系统之间的细节联系,定义个高级别接口进行通信,降低调用方的使用接口的复杂逻辑组合,迪米特法则的体现。
场景: 1.Collection List Set 2.web中间件减少客户端对后端接口的依赖 3.切面统一处理
享元模式
减少内存使用,使用内存共享技术,以此提高系统性能,避免对象重复创建,导致内存溢出
场景:本地缓存、数据库连接池,spring单例缓存
适配器模式
类适配与接口适配,解决不兼容对象包裹在适配器中让其兼容其他类
场景:外部实体兼容当前系统