设计模式总结
到此为止,前面我们总共已经讲解了27种设计模式
它们都是比较主流的设计模式,有自己固定的一套形式,任何语言都可以适用
它们整体上可以总结为三大类
- 创建型模式,用于创建或复用对象
- 结构型模式,通过类结构的巧妙设计,来达到某种特定效果
- 行为型模式,通过对业务流程的抽象和设计,来实现某类特定业务
除此之外,还有很多设计模式,它们不方便单独归为一类,比如
- 和已经总结的主流设计模式比较雷同
- 属于设计技巧,还不能单独归为一大类
- 实现代码非常之简单,没必要细讲
- 应用场景比较偏,不具有普适性
- 涵盖范围特别广,实现方式非常之多,没有具体形式
这里我们简单提一下其它的一些模式,以此来结束本Java设计模式专栏
黑板模式
黑板模式,英文名Blackboard Pattern
该模式用于将读和写完全分离开来
所有用户将数据直接写到黑板之上,所有用户直接从黑板上读取数据,而用户和用户之间是完全解耦无关联的
黑板模式是一种设计思想,它的应用情景很多
- 数据库的读取和写入,数据库就相当于黑板,读和写是完全不相关的
- 发布者 - 数据中心 - 订阅者模型,数据中心相当于黑板,发布者和订阅者是完全不相关的
- 生产者 - 仓库 - 消费者模型,仓库相当于黑板,生产者和消费者是完全不相关的
数据访问对象模式
数据访问对象模式,英文名Data Access Object Pattern,简称DAO模式
该模式通过一个专门的类或接口,来实现数据访问功能
这种设计方式的动机在于
- 集中管理和获取数据
- 当数据访问有多种方式时,方便在不同的实现类之间进行切换
以手机中的地图瓦片访问业务为例,瓦片的访问方式一般可能会有以下几种
- 读内存中的缓存对象
- 读存储卡中的缓存文件
- 读存储卡的瓦片目录
- 读存储卡中的压缩包
- 在线下载瓦片
可以看出,用户的目标只有一个,就是加载瓦片,但是实现方式会有多种
而且瓦片有多种格式,多个下载源,所以一套完整的瓦片加载机制,会包含非常多的DAO实现类
它的完整机制大概是这样的
TileImage << DaoImpl << DaoManager << MapView
MapView只负责调用DaoManager.loadTile接口
具体哪个Dao去提供瓦片,是DaoManager根据网络环境和用户配置去决定的
拦截器过滤器模式
拦截器过滤器模式,英文名Intercepter and Filter Pattern
该模式常用于网络请求和响应,用于对应用程序的请求或响应做一些预处理/后处理/过滤
拦截器主要用于:对请求或响应进行预处理和后处理
过滤器主要用于:对请求进行过滤,不符合条件的直接丢弃,不处理不响应
它们的实现方式基本是一致的,以过滤器为例,它的一般流程如下
Response << FilterManager << FilterChain << Filter << Request
一个应用可能配置了多个过滤器,当其中一个对Request进行了过滤,即丢弃该请求
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)