Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

读书笔记《面向模式的软件架构——模式系统》 #21

Open
luoway opened this issue Oct 15, 2020 · 2 comments
Open

读书笔记《面向模式的软件架构——模式系统》 #21

luoway opened this issue Oct 15, 2020 · 2 comments
Labels
from-other 转载、非原创

Comments

@luoway
Copy link
Owner

luoway commented Oct 15, 2020

No description provided.

@luoway
Copy link
Owner Author

luoway commented Oct 15, 2020

一、模式

1.1 模式是什么

​软件架构模式描述了在特定设计情形下反复出现的设计问题,并提供了已得到充分证明的通用解决方案摘要。解决方案摘要描述模式的组件、组件的职责和关系,以及这些组件协作的方式。

1.2 模式内容

​每个模式包含3部分:背景、问题、解决方案。

背景

​几乎不可能找出模式适用的所有情形,背景是将可能出现这种问题的已知情形悉数列出。

​如:开发带人机界面的软件。

问题

​阐述要解决的问题,描述解决问题要考虑的各种条件(作用力)。作用力可能互补,也可能互斥。

​如:MVC模式解决用户界面频繁变更的问题,让变更用户界面更容易,且不影响软件的核心功能。

解决方案

​模式提供的是解决方案纲要,而非详尽的解决方案内容。

​解决方案使用特定的结构描述组件和组件之间的关系,说明运行阶段的行为。

​如:MVC模式解决方案:将交互式应用程序分成三部分——处理、输出和输入。控制器接受输入,将输入事件转换为服务请求,发送给模型或视图。

1.3 模式类型

​模式分为三类:架构模式、设计模式、成例。

1.3.1 架构模式

​架构模式描绘基本的软件系统组织纲要,提供了一组预定义的子系统,指出这些子系统的职责,包含用于对子系统间关系进行组织的规则和指南。例如:MVC模式。

1.3.2 设计模式

​设计模式提供了对软件系统的子系统、组件或它们之间关系进行改进的纲要,描绘了对彼此通信的组件进行组织的常见结构,可解决特定背景下的一般性设计问题。

例如:观察者(Observer)模式,也称为发布订阅(Publisher-Subscriber)模式。

1.3.3 成例

​成例是一种低层的模式,针对的是特定编程语言。成例阐述如何使用给定语言的功能来实现组件间关系的特定方面。例如:JavaScript中的闭包。

1.4 模式之间的关系

​一句话概括:模式可变形,多个模式可组合

1.5 模式的描述

​给定本书描述模式所使用的更详细的描述模板

1.6 模式与软件架构

​判断模式成败的重要标准:在多大程度上实现了软件工程的目标

1.6.1 作为思维构件的模式

​模式致力于实现一个重要的软件架构目标:打造具有指定特征的软件架构。

1.6.2 打造异质架构

​单个模式只能帮助设计应用程序的某个方面,可选的模式越多,能解决的设计问题就越多。为有效的使用模式,需要将他们组织成模式系统。

​模式系统统一地描述一系列模式,将这些模式分类,指出这些模式之间错综复杂的关系。模式系统有助于充分发挥一系列模式的整体威力。

1.6.3 模式与方法

​模式描述包含实现方法。

1.6.4 实现模式

​要实现模式,不必使用特定的范式或语言,可结合使用模式和任何编程范式来打造软件架构。

1.7 总结

​模式提供了一个思维工具库(mental toolbox),有助于打造满足需求的软件。

@luoway
Copy link
Owner Author

luoway commented Oct 16, 2020

二、架构模式

架构模式描绘了软件系统的基本结构组织方案,提供了一组预定义的子系统,指定了这些子系统的职责,并包含对子系统间关系进行组织的规则和指南。

本章介绍8个架构模式:分层(Layers)、管道和过滤器(Pipes and Filters)、黑板(Blackboard)、中间人(Broker)、模型—视图—控制器(Model-View-Controller)、表示—抽象—控制(Presentation-Abstraction-Control)、微核(Microkernel)、反射(Reflection)。

2.1 导言

每个架构模式都有助于获得特定的系统整体特征。可根据模式有助于实现的特征对它们进行分类,本章将架构模式分为四类:

  • 从混乱到有序

    这类模式有助于避免组件过多。有助于以可控的方式将任务分解成相互协作的子任务。

    包括分层、管道和过滤器、黑板模式。

  • 分布式系统

    这类只包含一个模式:中间人模式。

  • 交互式系统

    MVC模式和PAC模式。

  • 可适应系统

    反射、微核模式。

选择一个或多个架构模式只是软件系统架构设计的第一步。

2.2 从混乱到有序

  • 分层模式有助于将应用程序划分为多组子任务,其中每组子任务都位于特定抽象层。
  • 管道和过滤器模式提供的结构适用于处理数据流的系统。每个处理步骤都封装在一个过滤器组件中,而数据传过相邻过滤器之间的管道。
  • 黑板模式适用于没有确定解决策略的问题。在这种模式中,多个专用子系统相互协作,提供粗略的解决方案。

2.2.1 分层模式 #22

2.2.2 管道和过滤器模式 #23

2.2.3 黑板模式 #24

@luoway luoway added the from-other 转载、非原创 label Feb 16, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
from-other 转载、非原创
Projects
None yet
Development

No branches or pull requests

1 participant