主要软件类型 适用 的几种典型的 架构模式

软 件 类 型   架 构 模 式   特 点 和 用 途
  系统软件   分层(Layer)   从不同的层次来观察系统,处理不同层次问题的对象被封装到不同的层中
管道和过滤器(Pipes and Filters) 用数据流的观点来观察系统,整个系统由一些管道和过滤器组成,需要处理的数据通过管道传送给每一个过滤器,每个过滤器就是一个处理步骤。当数据通过了所有的过滤器后,就完成了所有的处理操作,得到最终的处理结果。UNIX操作系统的管道模型就建立在这样的架构之上;在UNIX下进行开发时,每个进程都是一个过滤器,我们可以通过管道把进程连接起来,让所有的过滤器在协作中完成整个任务。大多数程序设计语言的编译器也是基于这种架构模式实现的。
黑板(Blackboard) 在这种架构中,在两种不同的构件;一种是表示当前的状态的中心数据结构;另一种是一组相互独立的构件,这些构件对中心数据进行操作。这种架构主要用于数据库和人工智能系统的开发。
分布式软件 经纪人(Broker) 在这种架构中,客户和服务器通过一个经纪人部件进行通信,经纪人负责协调客户和服务器之间的操作。并且为客户和服务器发送请求和结果信息。Broker就是经纪人模式的典型应用。
客户/服务器(Client/Server) 系统分为客户和服务器,服务器一直处于侦听的状态,客户主主动连接服务器,每个服务器可以为多个客户服务。
点对点(Peer to Peer) 系统中的结点都处于平等的地位,每个结点都可以连接其他结点。在这种架构中,一般需要由一个中心服务器完成发现和管理结点的操作。我们熟悉的ICQ程序以及WEB Service技术的大多数应用,都是典型的点对点结构。
交互软件 模型-视图-控制器(Model-View-Controller) 当应用程序的用户界面非常复杂,且关于用户界面的需求很容易变化时,我们可以把交互类型的软件抽象成抽模型,视图和控制器这三类组件单元,这种抽象可以很好地分离用户界面和业务逻辑,适应变化的需求。大多数现代交互软件都在一定程序上符合这一架构模型的特点。
显示-抽象-控制器(Presentation-Abstraction-Control) 这是显示-抽象-控制器模式的另一种变形,这里就不再详细介绍了

设计的最终目地是最大限度的实现代码复用,如果不能达到复用代码的目地,就没有必要再提取出新类了,(属性就是,某个共性比较小的代码,所以没有必须把属性给提出来变成类。如果有多个类调用它,就可以提出新类)。

时间: 2024-11-02 23:23:30

主要软件类型 适用 的几种典型的 架构模式的相关文章

四种典型大数据可视化交互模式及实例

大数据可视化交互设计中,有四种比较典型的交互模式,解决数据的复杂性问题.分别是动态改变视图.多视图关联.视图内容约减.焦点+上下文. 动态改变视图 动态改变视图:导航 动态改变视图:多属性排序 多视图关联 多视图是指将显示区域划分为多个视图或图层,是降低数据复杂性的一种方式.它包括采用同一编码方式编码多个数据子集的小多组图,以及采用不同的编码方式编码同一数据集的多样式图(多视图). 并列放置:便于对比,但需要更大的显示空间 图层叠加:图层数量有较大的限制 概览图和细节图采用相同的编码方式,解决数

Hibernate的四种典型例子(增删改查)

Hibernate的四种典型例子(增删改查)  //查询  // Session session=HibernateSessionFactory.getSession();  // session.beginTransaction();  // Query q=session.createQuery("from Info where id=:id");  // q.setInteger("id", 1);  // List l=q.list();  // Info

六 GPU 并行优化的几种典型策略

前言 如何对现有的程序进行并行优化,是 GPU 并行编程技术最为关注的实际问题.本文将提供几种优化的思路,为程序并行优化指明道路方向. 优化前准备 首先,要明确优化的目标 - 是要将程序提速 2 倍?还是 10 倍?100倍?也许你会不假思索的说当然是提升越高越好. 但这里存在一个优化成本的问题.在同样的技术水平硬件水平下,提升 2 倍也许只要一个下午的工作量,但提高 10 倍可能要考虑到更多的东西,也许是一周的工作量.提高 100 倍, 1000 倍需要的成本,时间就更多了. 然后,需要将这个

13种典型的家庭心理伤害

家庭中最大的谎言,莫过于"孩子什么都不懂",当家庭成员这样想的时候,往往心安理得地实施着对孩子的伤害,却不自知.在中国,有不少这样的家庭,孩子在与家人的日常互动中,备受伤害.我们来一起看看,这些伤害是什么. 1.家庭不和 大人不懂得谦让,经常互相责怪.其实,无论是父母吵架,还是父母和老人不和,对于孩子来讲都是心理上的电闪雷鸣.雨雪交加,但苦于自己年龄尚小,无能为力,只好躲在角落里暗自抽泣. 和谐的家庭气氛对于孩子的成长,就像充足的阳光和水分.父母的关系就是孩子的天气,孩子的心灵还很稚嫩

深度学习几种典型架构

介绍几种典型的深度学习架构. 卷积神经网络(CNN) 卷积神经网络由LeCun提出.在Kaggle竞赛中取得了巨大成功. 典型的卷积网络有两部分. 第一个是负责特征提取,由一对或多对卷积和子采样/最大池化层组成. 第二部分是经典的全连接多层感知器,将提取的特征作为输入.如下图所示. 卷积神经网络架构 长短期记忆网络(LSTM) 长短期记忆网络是比较流行的一种网络结构. LSTM架构 长短期记忆网络用两个门来控制单元状态的内容,一个是遗忘门(forget gate),决定了上一时刻的单元状态有多少

C/C++实现快速排序的两种典型代码

快速排序由C. A. R. Hoare在1960年提出.它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列. 第一种典型实现:通过两个游标来遍历整个待排序数组,i指向数组的第一个元素,j指向数组的最后一个元素.先取出数组中的一个数arr[i],将其保存在key中,此时arr[i]空出来了,这时游标j往前移,就可找到大于等于key的数,

常见的三种Web服务架构

常见的三种Web服务架构 转自http://www.cnblogs.com/bvbook/archive/2008/12/24/1360942.html 相互竞争的服务架构 The Competing Architectures 我们已经给出了“不同Web服务会有不同做法”的两个主要问题,现在要据此对不同风格的Web服务进行分类了.根据我的研究,常见的Web服务架构主要有三种:REST式架构.RPC式架构和REST-RPC混合架构.下面依次对它们进行介绍. REST式.面向资源的架构 RESTf

ASP.NET典型三层架构企业级医药行业ERP系统实战

我这里有一套课程和大家分享,我的qq是2059055336,   课程说明: 国内首部完整讲述ERP系统架构.业务逻辑.开发的项目实战课程.考虑到本系统的庞大及复杂性.本课程原价购买学员每人赠送一个U盾设备,U盾可插在任意电脑上进行学习,使用方便,学习灵活!可永久学习! 项目由来: 此项目是讲师亲自参与构架及参与开发的大型ERP项目,此项目已被太阳石药业,九芝堂药业,拜欧药业等多家大中型企业使用,为其创造巨大经济价值.整个项目由10多个研发人员全程打造,项目总价值接近3000万,给企业创造的价值

两种高效的事件处理模式(Proactor和Reactor)

典型的多线程服务器的线程模型 1. 每个请求创建一个线程,使用阻塞式 I/O 操作 这是最简单的线程模型,1个线程处理1个连接的全部生命周期.该模型的优点在于:这个模型足够简单,它可以实现复杂的业务场景,同时,线程个数是可以远大于CPU个数的.然而,线程个数又不是可以无限增大的,为什么呢?因为线程什么时候执行是由操作系统内核调度算法决定的,调度算法并不会考虑某个线程可能只是为了一个连接服务的,时间片到了就执行一下,哪怕这个线程一执行就会不得不继续睡眠.这样来回的唤醒.睡眠线程在次数不多的情况下,