java三层架构(表示层,业务逻辑层,数据访问层,与两层的区别,三层架构的优缺点)

目录

1 什么是三层

2 为什么使用三层

3 与两层的区别


1 什么是三层

UI(表现层):

主要是指与用户交互的界面。用于接收用户输入的数据和显示处理后用户需要的数据。

BLL:(业务逻辑层):

UI层和DAL层之间的桥梁。实现业务逻辑。业务逻辑具体包含:验证、计算、业务规则等等。

DAL:(数据访问层):

与数据库打交道。主要实现对数据的增、删、改、查。将存储在数据库中的数据提交给业务层,同时将业务层处理的数据保存到数据库。(当然这些操作都是基于UI层的。用户的需求反映给界面(UI),UI反映给BLL,BLL反映给DAL,DAL进行数据的操作,操作后再一一返回,直到将用户所需数据反馈给用户)

 每一层都各负其责,那么该如何将三层联系起来呢?

Entity(实体层):

它不属于三层中的任何一层,但是它是必不可少的一层。

Entity在三层架构中的作用:

  • 1、实现面向对象思想中的"封装";

  • 2、贯穿于三层,在三层之间传递数据;(注:确切的说实体层贯穿于三层之间,来连接三层)

  • 3、对于初学者来说,可以这样理解:每张数据表对应一个实体,即每个数据表中的字段对应实体中的属性(注:当然,事实上不是这样。为什么?1,可能我们需要的实体在数据表对应的实体中并不存在;2,我们完全可以将所有数据表中的所有字段都放在一个实体里)

  • 4、每一层(UI—>BLL—>DAL)之间的数据传递(单向)是靠变量或实体作为参数来传递的,这样就构造了三层之间的联系,完成了功能的实现。

但是对于大量的数据来说,用变量做参数有些复杂,因为参数量太多,容易搞混。比如:我要把员工信息传递到下层,信息包括:员工号、姓名、年龄、性别、工资....用变量做参数的话,那么我们的方法中的参数就会很多,极有可能在使用时,将参数匹配搞混。这时候,如果用实体做参数,就会很方便,不用考虑参数匹配的问题,用到实体中哪个属性拿来直接用就可以,很方便。这样做也提高了效率。

注:

这里为什么说可以暂时理解为每个数据表对应一个实体??

答:大家都知道,我们做系统的目的,是为用户提供服务,用户可不关心你的系统后台是怎么工作的,用户只关心软件是不是好用,界面是不是符合自己心意。用户在界面上轻松的增、删、改、查,那么数据库中也要有相应的增、删、改、查,而增删改查具体操作对象就是数据库中的数据,说白了就是表中的字段。所以,将每个数据表作为一个实体类,实体类封装的属性对应到表中的字段,这样的话,实体在贯穿于三层之间时,就可以实现增删改查数据了

综上所述:三层及实体层之间的依赖关系:

 思想来源于生活:

服务员:只管接待客人;

厨师:只管做客人点的菜;

采购员:只管按客人点菜的要求采购食材;

他们各负其职,服务员不用了解厨师如何做菜,不用了解采购员如何采购食材;厨师不用知道服务员接待了哪位客人,不用知道采购员如何采购食材;同样,采购员不用知道服务员接待了哪位客人,不用知道厨师如何做菜。

他们三者是如何联系的?

比如:厨师会做:炒茄子、炒鸡蛋、炒面——此时构建三个方法( cookEggplant()、cookEgg()、cookNoodle())

顾客直接和服务员打交道,顾客和服务员(UI层)说:我要一个炒茄子,而服务员不负责炒茄子,她就把请求往上递交,传递给厨师(BLL层),厨师需要茄子,就把请求往上递交,传递给采购员(DAL层),采购员从仓库里取来茄子传回给厨师,厨师响应cookEggplant()方法,做好炒茄子后,又传回给服务员,服务员把茄子呈现给顾客。

这样就完成了一个完整的操作。

在此过程中,茄子作为参数在三层中传递,如果顾客点炒鸡蛋,则鸡蛋作为参数(这是变量做参数)。如果,用户增加需求,我们还得在方法中添加参数,一个方法添加一个,一个方法设计到三层;何况实际中并不止设计到一个方法的更改。所以,为了解决这个问题,我们可以把茄子、鸡蛋、面条作为属性定义到顾客实体中,一旦顾客增加了炒鸡蛋需求,直接把鸡蛋属性拿出来用即可,不用再去考虑去每层的方法中添加参数了,更不用考虑参数的匹配问题。

2 为什么使用三层

使用三层架构的目的:

解耦

同样拿上面饭店的例子来讲:

(1)服务员(UI层)请假——另找服务员;厨师(BLL层)辞职——招聘另一个厨师;采购员(DAL)辞职——招聘另一个采购员; (2)顾客反映:

  • 1、你们店服务态度不好——服务员的问题。开除服务员;

  • 2、你们店菜里有虫子——厨师的问题。换厨师;

任何一层发生变化都不会影响到另外一层!!!

3 与两层的区别

 两层:

当任何一个地方发生变化时,都需要重新开发整个系统。"多层"放在一层,分工不明确耦合度高——难以适应需求变化,可维护性低、可扩展性低

三层:

发生在哪一层的变化,只需更改该层,不需要更改整个系统。层次清晰,分工明确,每层之间耦合度低——提高了效率,适应需求变化,可维护性高,可扩展性高

综上,三层架构的优势:

  • 1,结构清晰、耦合度低

  • 2,可维护性高,可扩展性高

  • 3,利于开发任务同步进行, 容易适应需求变化

三层架构的优劣势:

  • 1、降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成。

  • 2、有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码

  • 3、增加了代码量,增加了工作量

  • 16
    点赞
  • 56
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: mvc三层架构是一种常用的软件架构模式,将应用程序分为模型(Model)、视图(View)和控制器(Controller)三个部分,实现了对业务逻辑的解耦和灵活性,能够有效地处理复杂的业务逻辑。 其中,模型主要负责处理应用程序的数据业务逻辑,包括数据的获取、修改和存储等。视图主要负责展示用户界面,与用户交互,将数据呈现给用户。控制器主要负责协调视图和模型之间的交互,处理用户的请求和响应,提供业务逻辑实现的入口。 对于复杂的业务逻辑,mvc三层架构具有以下优点: 1.高度模块化:通过将业务逻辑分离到模型,可以使得整个应用程序更易于维护和扩展。 2.实现解耦:mvc三层架构可以将不同的模块之间的耦合降至最低,减少了意外的影响和损失。 3.提高代码的复用性:每个部分的代码都可以被重复使用,这有助于节省开发时间和成本。 4.易于测试:由于mvc三层架构可以将业务逻辑和表示逻辑分离,这样业务逻辑的单元测试和模拟也变得更加容易。 总之,mvc三层架构是一种有效的软件架构模式,对于复杂的业务逻辑具有很好的应对能力,使得开发更加简单、清晰、高效,对于设计和构建健壮的应用程序是非常重要的。 ### 回答2: MVC三层架构是一种常见的软件设计模式,用于分离业务逻辑、用户界面和数据三层架构的主要目的是将软件的不同部分分解为独立的,每个都有不同的职责,以便于开发、测试和维护。对于复杂的业务逻辑,MVC三层架构可以提供以下优点: 1.模块化设计 MVC三层架构将应用程序分为三个独立的模块:模型、视图和控制器。每个模块都有不同的职责,可以独立开发和测试,降低了整个系统的复杂性。 2.清晰的业务逻辑 通过将业务逻辑分离到模型中,MVC三层架构可以使开发人员易于管理和维护业务逻辑。模型包含对数据的存储、访问和更新,以及业务规则的实现。 3.可扩展性 MVC三层架构是一种可扩展的设计模式,允许添加新的模块和组件。例如,可以添加一个新的模型,以处理与数据存储的不同方式,或者添加一个新的控制器,以处理不同的应用程序行为。 4.测试驱动开发 MVC三层架构提供了一个理想的测试环境。因为每个模块都可以独立测试,开发人员可以更容易地编写单元测试、功能测试和集成测试。 总之,MVC三层架构可以帮助解决复杂业务逻辑问题,让开发人员更专注于实现业务需求。同时,MVC三层架构还有助于提高代码质量、保持代码的可维护性和可扩展性,降低整个软件系统的复杂性。 ### 回答3: 随着计算机技术的发展和应用需求的增多,业务逻辑的复杂度也随之增加,这时采用MVC三层架构就变得尤为重要。MVC架构是一种基于分结构的架构模式,将整个应用程序分为Model、View、Controller三个次来进行开发和管理。 MVC三层架构最基本的思想就是将展示(View)与业务逻辑(Model)进行分离,由控制(Controller)来协调和调度两者之间的交互。这样可以使得整个应用程序更加清晰、灵活、易于维护。具体来说: 1. Model:负责业务逻辑的处理和数据的存储,它是整个系统的核心。Model包括数据访问业务逻辑两个部分。其中数据访问负责与数据持久化存储技术进行交互,业务逻辑负责处理表达核心业务逻辑的代码。 2. View:负责展示数据,为用户提供交互界面。View通常与用户直接进行交互,一般都是通过Web页面、桌面应用、或者移动端应用来实现。 3. Controller:负责协调和控制View和Model之间的交互,同时也包括一些其他的业务逻辑处理。Controller通常会接收请求并调用相应的Model进行数据处理,然后再将处理好的数据返回给View进行展示。 MVC三层架构可以极大地降低程序的耦合度,提高代码的重用性和可维护性。通过拆分应用程序的不同次,使得不同次之间的协作更加清晰和有序,降低了复杂业务逻辑开发的难度,同时也有助于提高项目的开发效率。在复杂业务逻辑开发中,采用MVC三层架构是一种非常明智的选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值