【设计模式】【29】其它模式

【设计模式】【29】其它模式,第1张

设计模式总结

到此为止,前面我们总共已经讲解了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进行了过滤,即丢弃该请求

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/872201.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-13
下一篇 2022-05-13

发表评论

登录后才能评论

评论列表(0条)

保存