`
hongan
  • 浏览: 175680 次
  • 性别: Icon_minigender_1
  • 来自: 佛山
社区版块
存档分类
最新评论

应用程序的层次浅谈

阅读更多

原作者的blog地址:http://www.blogjava.net/sitinspring

 

一般来说, 在创建一个应用程序之前,首先要决定这个应用程序的体系结构。应用程序体系结构(Application Architecture)由应用程序开发者设计,它指定了在各种各样的终端系统上,应用程序是如何组织在一起的。为了降低设计难度,大部分程序都以层(称为layer或level)的方式组织在一起,每一层都建立在它的下层基础上,使用下层提供的服务,下层对上层隐藏了许多服务实现的细节。这种方法几乎应用于整个计算机科学领域,也可以称为信息隐藏,数据类型抽象,数据封装,面向对象编程等。

 

分层即是对类进行一些规划,以流程中的类的用途和所处环节划分,把程序中将要用到的各个类分别归纳到各个包(目录)中。分层是对系统进行细分的第一步,它旨在将系统按具体功能和用途分解为相对独立的各个部分.如果说细分是将把难以解决的大问题分解成了各个容易解决的小问题的话,分层则是把解决同类小问题的类归纳到一起,这样程序的结构更加清晰,程序的可读性和可维护性越好,也更容易得到重用。


从大的尺度来讲,一个程序可粗略的分成三个层次:

界面层(UI layer),这是用户能直接感受到的,包含显示和控制两部分;

业务层(Business layer),其中包含了业务逻辑和业务处理;

持久层(Persistence layer),它用来将数据存储和将数据从持久层提取出来。

 


1.界面层(UI layer)中,包含两个层次:视图层View和控制层Controller.

视图层View是用户查看数据,输入和向用户输出结果的一层,这一层是用户唯一能够感受软件功能的窗口,它或者由Swing组件搭建(桌面系统或C/S系统中),或者由JSP搭建(B/S系统),它负责让用户输入数据和将控制层返回的数据显示给客户。其中返回的数据一般是领域对象的变体或者直接就是领域对象或其集合。在Web程序中jsp基本就属于这一层的。

控制层Controller是用来将界面和业务层联系在一起的,在系统的各层次中,应该和View层打交道一般只有Controller层, Controller层是View层和系统其它层次进行交互的中介者, View层越过中介者直接调用其它层次的行为应该尽量避免。

框架类(Framework Classes):这些类一般由固定的框架提供,程序员不能改变.在类的层次上它一般处于界面和业务层之间,即控制层的位置,jsp/servlet中的Servlet,Struts1,2中的Action都是这样的类,它承担了接受用户输入,并展示业务处理的结果的任务.

一般来说,为了减少耦合,提高程序的可维护性,我们一般采用MVC架构模式将业务层,视图层和控制层分开。

 

2.业务层(Business layer)中包含领域层 Domain,服务层 Service和实用工具层Util。

业务层是整个系统的关键部分,它主要由领域模型和业务逻辑组成,领域模型定义系统内相互作用的各个实体,业务逻辑则定义了领域模型所能执行的不同操作, 领域层的各个类代表了领域模型,而服务层的各个类代表了业务逻辑. 领域层和服务层是起点,其它各层都从这里起步.

领域层 Domain:领域对象是对现实世界业务处理对象的抽象和归纳,领域层中的类基本上都是实体(Entity)类,如员工管理系统中的Employee,学籍管理系统中的Student,借贷管理系统中的Contract等,系统的业务处理中用到那些实体对象,领域层中一般就应该有和这个实体对象相对应的实体类。这些类在刚开始设计时可能只有一些属性和对应的getter/setter方法,以后会不断的加入新的内容(主要是方法),如果有必要的话,可以为这些领域对象设计一些上层的抽象类或者接口,借助于泛型,反射,控制反转等高级技能能在一定程度上简化程序的编写过程。此外,领域层是程序的核心内容,因为其他层次都在很大程度上依赖Domain层的设计,如果这一层设计不够完善会使以后的工作步履蹒跚.

服务层Service:这一层就是为领域对象提供服务用的,领域对象一般不直接和表现层,持久层直接打交道而是通过服务层进行代理.服务层是UI层到持久层的中间通道,它处于上通界面下通持久层的中间环节,这个特性是使的这一层决定了软件功能的多少。
一般来说,UI层向服务层传入的是用户输入的一些参数,服务层进行验证,重组后向下层DAO传输;而服务层从Dao层收到的是领域对象或其集合,而它向UI层返回的是领域对象或者其集合的变体或者直接是领域对象或者其集合本身。Service诸类的实例在桌面程序和CS程序中一般作为Model的一个私有成员,而在Web程序中常常要用到时再创建出来。除领域层外,其余各层是在围绕它而设计.通道类(Plumbing Classes,当传输实体类的通道)

实用工具层Util:
这一层相对简单,它包含了各种工具类,类中包含的主要是静态函数和静态成员变量,这些类对共通的函数,变量进行了归纳,它旨在消除重复代码,降低主体代码的复杂程度.一般此层中类的复用程度很高.值得通过项目积累. 辅助类(Assistant Classes)

 

3.持久层(Persistence layer)是直接与持久介质打交道的层次,持久介质可以是常见的关系型数据库,文件甚至Web Service,它一般包含两个部分。

数据存储对象层(DAO层),sql语句一般写在这层中, 然后由它调用;DAO层是最低的一层,与持久介质直接打交道,它包含具体文件的位置,数据库连接等;通道类(Plumbing Classes,当传输实体类的通道)

另一个部分就是持久介质,通常是关系型数据库。
Dao层中各个类一般作为Service的私有成员,供Service调用。

如何从需求中分析出诸个层次中的类呢,我们在大尺度上可以按照下面的步骤进行:

Domain the first:首先从业务流和业务规则中归纳总结出领域对象.
Service the second:为领域对象设计服务类。
Persistence the third:持久层的负责领域对象持久化到持久介质以及逆过程,它的设计在领域层和服务层之后,比较典型的持久层设计有数据库表的设计和ER图(实体关系图)的绘制.
View the last:最后设计表现层,表现层受领域层和服务层制约, 容易变化且易于修改,通常放在最后实现.

 

4.具体步骤如下

1)理解,分析,钻研需求,彻底了解你的客户想要什么,需要你做些什么.
2)将大系统分解成一个个子系统,细分出各个层次,搞清楚各层的任务。
3)分析业务逻辑,归纳出业务流.
4)从业务流和业务规则中总结出领域对象.
5)为领域层实现服务层.
6)以Domain层和Service层为核心设计表现层和持久层,直到形成完整的程序.
7)加入实用层消除重复代码,梳理结构和简化流程,.
8)限制跨层的调用.



 

 

  • 描述: 分层结构
  • 大小: 16.4 KB
  • 描述: 各层间的交互
  • 大小: 28.7 KB
分享到:
评论

相关推荐

    浅谈单片机程序设计中的“分层思想”(转)

    "浅谈单片机程序设计中的“分层思想”" 本文总结了单片机程序设计中的重要思想之一,即“分层思想”。通过分析单片机学习板和实际项目应用中的差异,作者强调了硬件设计和软件设计的平衡关系,并引入了“映射”的...

    浅谈Linux设备驱动.pdf

    Linux 设备驱动程序浅谈 Linux 设备驱动程序是指用于操作系统和硬件设备之间的交互接口。它是一个小程序,包含有关硬件设备的信息,用于管理计算机的硬件资源。 Linux 设备驱动程序扮演沟通的角色,把硬件的功能...

    浅谈电子信息工程的应用.pdf

    在《浅谈电子信息工程的应用》中,作者探讨了这一技术在建设工程项目管理中的应用及其必要性,揭示了信息化管理在建筑行业所面临的挑战及解决之道。 当前,国内建设工程项目信息化管理已经逐渐兴起,但同时也面临...

    浅谈第四层交换机技术及应用

    它不仅应用了第三层交换机中的IP交换技术,更重要的是它站在更高层次上,可以查看第三层数据包头源地址和目的地址的内容,可以通过基于观察到的信息采取相应的动作,实现带宽分配、故障诊断和对TCP/IP应用程序数据流...

    浅谈电子信息工程管理中电子计算机技术的应用.pdf

    《浅谈电子信息工程管理中电子计算机技术的应用》 随着信息技术的飞速发展,电子计算机已经渗透到社会的各个角落,对于电子信息工程管理而言,电子计算机技术的应用显得尤为重要。本文旨在探讨电子计算机技术在电子...

    浅谈。net5种数据库控件

    在ASP.NET框架中,数据库控件是开发人员用来高效地显示和操作数据的关键工具。本文将深入探讨五种主要的数据库控件:GridView、...理解并熟练运用这些控件,将极大地提升ASP.NET应用程序的数据呈现效率和用户体验。

    浅谈测试web程序的几大要点[3]

    Web应用系统的层次一旦决定,就要着手测试用户导航功能,让最 浅谈测试web程序的几大要点[3] 软件测试 导航的另一个重要方面是Web应用系统的页面结构、导航、菜单、连接的风格是否一致。确保用户凭直觉就知道Web...

    浅谈机械自动化在机械制造中的应用 (2).rar

    《浅谈机械自动化在机械制造中的应用》 随着科技的快速发展,机械自动化技术在机械制造领域扮演着越来越重要的角色。本文将深入探讨机械自动化的基本概念、应用特点以及它如何革新传统机械制造工艺,提高生产效率和...

    浅谈Android技术.pdf

    Android系统的架构分为多个层次,首先是最顶层的应用程序,包括联系人管理、短信应用、浏览器、日历等核心应用,它们全部使用Java语言编写。开发者可以通过应用程序框架来访问和重用核心应用的API,这极大地促进了...

    浅谈计算机通信技术在电子信息工程中的应用 (2).pdf

    《浅谈计算机通信技术在电子信息工程中的应用》 在当今信息化社会,计算机通信技术与电子信息工程的融合已成为了科技进步的重要推动力。电子信息工程是构建在广域网通信领域中的核心部分,它允许用户企业网络迅速、...

    浅谈机械自动化在机械制造中的应用 (1).rar

    《浅谈机械自动化在机械制造中的应用》 随着科技的快速发展,机械自动化技术在机械制造领域扮演着越来越重要的角色。本文将深入探讨机械自动化的基本概念、应用特点以及它如何推动机械制造业的进步。 一、机械自动...

    浅谈机器学习与深度学习的概要及应用.pdf

    Tom Mitchell 提供了一个经典的定义,即一个计算机程序如果在任务 T 上的性能度量 P 随着经验 E 的增加而提高,那么我们可以说该程序在学习。机器学习算法主要分为监督学习、无监督学习、强化学习和推荐系统。监督...

    《浅谈三层结构》示例代码

    三层结构是一种常见的软件架构设计模式,它将应用程序分为三个独立的层次:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种结构旨在提高软件的可维护性...

    Africa《浅谈三层结构》及其示例代码

    三层结构是一种常见的软件架构设计模式,它将应用程序分为三个独立的层次:表示层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer),旨在提高软件的可维护性、可扩展...

    浅谈电信网络的安全(全文).docx

    浅谈电信网络的安全(全文)全文共6页,当前为第1页。浅谈电信网络的安全(全文)全文共6页,当前为第1页。浅谈电信XX络的安全 浅谈电信网络的安全(全文)全文共6页,当前为第1页。 浅谈电信网络的安全(全文)全文共6页,...

    浅谈程序设计语言C的教学改革.docx

    1. **调整教学内容**:除了讲解基本语法,还应增加算法设计、数据结构和调试技巧的讲解,使学生能够从更高层次理解程序设计。 2. **更新教学方法**:采用案例驱动、项目导向的教学方式,引导学生通过实际操作来学习...

    浅谈企业网站的设计与建设.pdf

    浅谈企业网站的设计与建设 本文旨在通过某企业网站的设计和建设的实例,详细阐述网站建设的方法与过程,将理论与实践相结合,构建出一个具有借鉴性的网站设计框架,对当前互联网高速发展而催生出的新兴行业——网络...

    浅谈基于培养学生思维能力的高职程序设计类课程的教学改革.pdf

    文章提出采用“渐进式教学法”,结合案例教学法,将实例分为初级、中级和高级三个层次,引导学生逐步形成程序思维。初级阶段主要培养学生的模仿能力,让学生通过观察和执行,熟悉编程的基本操作;中级阶段则鼓励学生...

    浅谈SQL SERVER安全机制.pdf

    "浅谈SQL SERVER安全机制.pdf" 本文主要讨论了SQL SERVER的安全机制,分析了SQL SERVER数据库在安全方面存在的不足,并提出了提高SQL SERVER安全的方法。 首先,SQL SERVER的安全控制策略是一个层次结构系统,只有...

    浅谈.net三层结构原理与用意

    .NET三层架构是一种常见的软件设计模式,它将应用程序的复杂逻辑分解为三个独立的层次:表现层(Presentation Layer)、业务逻辑层(Business Logic Layer)和数据访问层(Data Access Layer)。这种架构模式的主要...

Global site tag (gtag.js) - Google Analytics