常见的软件架构模式

模式 优点 缺点
分层模式 一个底层服务可以被不同的高层服务使用;分层结果更容易进行标准化,因为可以清晰地定义每个层级层级内的修改会影响其它层 不是普适性的架构;某些场景下,需要跳过其中一些分层
CS模式 容易对系列服务进行建模,供客户端请求 请求通常是在服务器的不同线程中进行响应的;因为不同客户端有不同形式,进程间通信会造成很大负载
主从模式 准确性——服务的执行委托给了不同的从模块 从模块是独立的:没有共享状态;主从模块间的通信延迟可能是一个问题,尤其在实时系统中。
管道过滤器模式 支持并发处理,其中输入、输出由数据流组成时,过滤器在接收到数据时即开始计算;容易添加过滤器,系统很容易扩展;过滤器可重用,可以通过重新组合已有的过滤器来创建不同的管道流。整体效率受最慢的过滤程序限制; 从一个过滤器传递到另一个时,存在数据转换的负载
代理模式 允许对象进行动态的修改、增、删、重定位,对开发者来说内容分发是透明的 需要对服务描述进行标准化
P2P模式 支持去中心化运算;对任意节点的失败都有高度稳定性;在资源和计算能力方面具有高度可伸缩性 无法保证服务质量,因为节点之间是自愿合作的;很难保证安全;性能取决于节点的数量
事件总线模式 很容易向系统好加入新的发布者、订阅者和连接;对于高度分布式应用很有效 伸缩性可能是个难题,因为所有的信息传输都要通过相同的时间总线
MVC模式 对同一模型很容易构建多个视图,在运行时可以任意连接或断开 增加了复杂性,用户操作可能导致很多不必要的更新
黑板模式 容易添加新应用;很容易扩展数据空间中的结构 修改数据空间的结构很难,因为所有的应用都会被影响;可能需要同步机制和访问控制
解释器模式 可能支持高度动态化行为;有利于终端用户的可编程性;增强了灵活性,因为替换一个解释程序很容易 因为解释型语言通常比编译型语言要慢,因此性能可能是一个问题
posted @ 2020-10-30 22:10  Tiro8183  阅读(104)  评论(0)    收藏  举报