架构、框架和设计模式

软件架构是系统的一个草图,阐述了各个组件之间的通信,层次划分,一旦系统开始详细设计,架构蓝图就很难甚至无法改变。 例如:三层架构:一种设计软件架构的思想。 通

软件架构是系统的一个草图,阐述了各个组件之间的通信,层次划分,一旦系统开始详细设计,架构蓝图就很难甚至无法改变。

例如:三层架构:一种设计软件架构的思想。

通常意义上的三层架构就是将整个业务应用划分为表示层(User Interface  Layer)、业务逻辑层(Buesiness Logic Layer)、数据访问层(Data Access Layer)。区分层次的目的是为了体现“高内聚,低耦合”的思想。

1.表示层

表示层位于最外层(最上层),最接近于用户。用于显示数据和接收用户输入的数据为用户提供一种交互式的操作界面。

2.业务逻辑层

业务逻辑层无疑是系统架构中体现核心价值的部分。他的关注点主要集中在业务规则的制定、业务流程的实现等与业务需求相关的系统设计上,也就是说,他与系统所对应的领域(Domain)逻辑有关,很多时候,也将业务逻辑层称为领域层。

业务逻辑层在体系架构中的位置很关键,他处于数据访问层与表示层中间起到了数据交换中承上启下的作用。对于数据访问层而言,他是调用者;对于表示层而言,他却是被调用者。

3、数据访问层

数据访问层有时候也称为持久层,其功能主要是负责数据库的访问,可以访问数据库系统、二进制文件、文本文档、或是XML文档。简单的说法就是实现对数据表的Select、Insert、Update和Delete操作。

 

软件框架是(Framework)是项目软件开发过程中提取特定领域软件的共性部分形成的体系结构,不同领域的软件项目有着不同的框架类型。框架的作用在于:由于提取了特定领域软件的共性部分,因此在此领域内新项目开发过程中代码不需要从头编写,只需要编写在框架的基础上进行一些开发和调整便可满足要求:对于开发过程而言,这样做会提高软件的质量减低成本,缩短开发时间,是的开发越做越轻松,效益越做越好,形成一种良性循环。

框架不是现成可用的应用系统,他是一个半成品,需要后来的开发人员进行二次开发,实现具体功能的应用系统。框架也不是平台,平台的概念比较模糊,他可以是一种操作系统、一种应用服务器、一种数据库软件或一种通信软件等,因此平台在应用方面主要指提供特定服务的系统软件;而框架更侧重于设计和开发过程,或者可以说,框架通过调用平台提供的服务而起作用。

框架也不是工具包或者类库。望文生义,类库就是一些类的集合,只要我们将一些可以复用的类集中放到一个Library中,就可以称其为一个类库。类库中的许多元素(如:类、结构、接口、枚举等)之间可能有一些关联,但这些关联通常用于支持一个类概念或接口概念的完整表达。如果从一个更高的视角来审视类库,可以发现类库中的一个个“完整的概念”之间是无关的或是关系松散的,框架和类库有着相似的形式,即框架往往也是类的集合;但不同之处在于,框架中的各个类并不是孤立的,框架中的业务逻辑代码是将不同的类连在一起在他们之间建立协作关系,例如:Spring-一个开源的Web设计规范。

 

设计模式、架构、框架的比较

 

1、框架与架构

框架不是架构,框架比架构更具体,更偏重于技术,而架构偏重于设计。一个架构可以通过多种框架来实现.

2、框架与设计模式

设计模式研究的是针对单一问题的设计思路和解决方法,一个模式可以应用于不同的框架和被不同的语言所实现;而框架则是一个应用的体系结构,是一种或多种设计模式和代码的混合体,虽然他们有所不同,但却共同致力于使人们的设计可以被重用,在思想上存在着统一性的特点,因而设计模式的思想可以在框架设计中进行应用。

3、架构与设计模式

设计模式主要是针对单一问题的解决方法,范畴比较小,而架构是高层次的针对体系结构的一种设计思路,范畴比较大。可以说一个架构中可能会出现多个设计模式类解决架构中的多种问题。

 

通过上面的分析,可以看出这三者之间得区别还有很多,首先架构是一个范畴最大的概念,是最高层次的设计,一个架构设计中可能会用到多个框架和多个设计模式;而框架

是针对共性抽象出来的半成品,这里面可能包含着多个设计模式;而设计模式就是解决单一问题的设计思路和解决方法。

要做好一个项目,架构设计、框架设计和使用、设计模式都是非常重要的。我们在做一个项目的时候首先设计出来的应该是架构,是对整个问题的一个总体上的设计,之后再会考虑运用什么样的框架和设计模式来实现我们的框架;当然,只使用框架和设计模式中的一种也是经常遇到的。

这三者的共同点都是为解决现实生活中的问题而出现的,都为了使我们的设计更面向对象化。

您可能有感兴趣的文章
如何进行软件架构设计?

如何用一个实例来探讨嵌入式软件架构设计

架构的设计

软件架构的六大设计原则

软件工程团队作业4.1——《逻辑架构设计》