架构模式很多,仅举三例。
分层架构
经典三层架构最优场景,数据库管理软件(增删查改),大部分企业软件都是这类。经典三层架构自顶向下由用户界面层、业务逻辑层与数据访问层组成。《领域驱动设计》中的分层架构:用户界面层、应用层(给调用者提供完整的业务用例)、领域层、基础设施层。
分层依据:一,顶层更面向业务和用户,底层更面向通用和硬件。二,面对变化。三,同层处于同一抽象层次。
注意:如果某一层大部分函数只是简单调用低层的函数,则此层应该取消。
事件总线架构
三个参与者:事件总线、发布者、订阅者,发布者只能发消息给事件总线,事件总线只能发消息给订阅者。消息也称为事件。此架构非常适合于分布式系统,异构系统也没有影响。一个模块可以同时是发布者和订阅者。
时间总线模块和消息队列模块的区别:前者收集、转发消息,不需要知道有多少个订阅者;后者直接处理消息或转给子模块。消息队列相对消息优点:异步、削峰。消息相对于直接函数调用的优点:解耦。
黑板模式
黑板模式由3个主要组成部分组成:黑板:包含来自解决方案空间的对象的结构化全局内存。知识源:专门的模块和它们自己的表示。控制组件:选择、配置和执行模块。使用场景:语音识别、车辆识别和跟踪、蛋白质结构识别、声纳信号的解释等。这类问题具有如下特点:可以分解成多个子问题,但每个子问题都属于不同的专业领域。要解决子问题,需要使用不同的表示法和范式,往往没有既定策略。