三层架构 是设计模式吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三层架构 是设计模式吗相关的知识,希望对你有一定的参考价值。

三层架构 是设计模式 还是架构模式?

楼上的说的也对,设计模式是一种思考方式,用于面向对象的方法解决问题的,是某个解决问题的方法、思路或者实现某个功能的方法。程序中用到的设计模式可以无限多个。通俗的来讲就是一个功能模块或者一段代码或者一个逻辑的实现要用到设计模式,说明了就是怎么让你的代码更加健壮,更加有效率,更加稳定,更加简洁等,而架构模式是对于整个项目来说,是面向的整个解决方案,涵盖了软件的基本架构。无论大小项目都可以采用三层架构模式,个人理解,这样以便于使得界面表示层和业务逻辑层,数据访问层有效独立,而互相调用,便于维护,升级,一旦需求变化,只需要将其中某一小块修改,而不需要大动干戈,另一方面如果现在要做的程序比如是Java,要移植到windows下用C#开发,只需要界面添加相应的控件即可,里面的类和实体,业务逻辑,dll,数据访问层都不需要什么修改,这就是三层架构的好处,还有很多,通俗的可以这么说,设计模式和架构模式遵循的都是同一个原则,高效,简洁,方便,易维护,易修改,学术叫高内聚低耦合就是这个道理,

不知道我这么说楼主明白了没?
参考技术A 楼上的说的也对,设计模式是一种思考方式,用于面向对象的方法解决问题的,是某个解决问题的方法、思路或者实现某个功能的方法。程序中用到的设计模式可以无限多个。通俗的来讲就是一个功能模块或者一段代码或者一个逻辑的实现要用到设计模式,说明了就是怎么让你的代码更加健壮,更加有效率,更加稳定,更加简洁等,而架构模式是对于整个项目来说,是面向的整个解决方案,涵盖了软件的基本架构。无论大小项目都可以采用三层架构模式,个人理解,这样以便于使得界面表示层和业务逻辑层,数据访问层有效独立,而互相调用,便于维护,升级,一旦需求变化,只需要将其中某一小块修改,而不需要大动干戈,另一方面如果现在要做的程序比如是Java,要移植到windows下用C#开发,只需要界面添加相应的控件即可,里面的类和实体,业务逻辑,dll,数据访问层都不需要什么修改,这就是三层架构的好处,还有很多,通俗的可以这么说,设计模式和架构模式遵循的都是同一个原则,高效,简洁,方便,易维护,易修改,学术叫高内聚低耦合就是这个道理,

不知道我这么说楼主明白了没。
参考技术B 楼上说的有点绝对了,模式的使用并不在项目的大小。模式应该是一种思考方式,用面向对象的方法解决问题的,想用模式哪怕几百行的程序也能用。给你个很典型的情况,刚才就有人在问我关于C/S架构聊天软件的架构,程序并不大。就架构来说,需要用三层来处理,就模式来说,是很典型的观察者模式。

三层架构面向的是整个解决方案,涵盖了软件的基本架构。模式指的是某个解决问题的方法、思路。一般来说程序(基本上)只可能是两层或者三层的,但是程序中用到的设计模式可以无限多。

普通的WEB设计模式套用一般都在业务逻辑上,比如某个计算方法需要用策略模式等等。

MVC三层架构详解

文章目录


MVC三层架构详解

本文详细介绍MVC三层架构


一、MVC是什么?

MVC实际是一种软件构件模式。它被设计的目的是为了降低程序开发中代码业务的耦合度。并且实现高重用性。增加代码复用率。部署快,且生命周期成本低,可维护性高也是MVC模式的特点。

1.什么是低耦合?

举个简单的例子:

从学程序之初,听到很多遍的一个名词就是低耦合。为什么一定要强调低耦合?我曾经听到过一个这样的说法,对于编程人员来说,喜欢米饭大于喜欢面条。为什么这么说呢,是因为面条经常是拌着卤汁吃,卤汁和面混淆在一起,你只能选择吃或者不吃。即使你不喜欢这个卤汁,你也无法把面条和卤汁一分为二,再换一个口味的卤汁过来。而米饭则不会有这种限制,因为米饭和菜往往是分开放的,即使你不喜欢吃面前的菜,那你完全可以换一个菜来吃。这就是低耦合。

2.低耦合有什么好处?

初学者往往不能体会到低耦合的好处,很难理解低耦合对于程序开发的重要性。

低耦合的好处在于,程序在开发中对于业务进行分层,各司其职,互不干扰,但又紧密结合,互相依赖。这样,无论是后期的调试,维护,还是二次开发,都能带来极大的便利。学过计算机网络的人应该知道TCP/IP协议,它把不同网络之间传输信息的过程从上到下分为四个层次,四个层次分别对不同的功能提供服务,可以说它们之间的业务是互不相干的。但是他们四个层次组合在一起才构成了整个TCP/IP协议,才实现了不同计算机之间的通信,四个层次缺一不可。假设现在想要对某个层次的功能进行扩充,那么我只需要去找到这一层就行,而不需要去改动整个四层模型。同样的道理,放在程序开发中也是一样的。低耦合的开发模式往往需要对整个业务实现分层开发,这样即使后期调试的时候发现了问题,那么问题出现在哪一层是非常清晰可见的。我们可以直接去找到该层进行二次调试,查找BUG。如果要扩展功能也只需要在各个层次之间添加上实现新功能的业务即可。如果不采用这种低耦合的分层开发,试想一下,所有的代码都放在一个Java文件当中,稍微复杂一点的项目都可能要几万十几万行代码。那么如果项目出了BUG该怎么在这十几万行代码中精准的找到错误将是一个巨大的工作量。而对于分层开发的项目来说,每个业务逻辑都清晰可见。那么调试和维护,以及二次开发时就大大减少了不必要的麻烦。

3.增加代码复用率

学习编程最初至今,你应该总会听到代码复用率这个名词。那么MVC是怎么实现增加代码复用率的?其实很好理解,假设现在车子的轮胎爆掉了,那么要去修理的话最多只需要换一个配套的轮胎,配套的轮胎很好找,因为车企总是有很多代工厂去生产这些配件。也有很多的汽修店可以满足我们的需要,我们不必再专门自己造一个轮胎。对于开发中的增强代码复用来说原理是类似的,因为我们使用了分层开发,那就意味着,别人造好的轮子,写好的方法,我只需要引进来就可以使用了,就不必再亲自实现这些方法。例如你现在写了一个登陆功能,写了SQL语句,要根据用户名和密码查询。那么在后台管理的时候,我们可能需要对用户信息进行列表展示。那么这个方法完全可以复用,实际开发中,显示所有信息和模糊查询信息往往都是只有一个方法来实现。而不是一个功能一个方法。这样就实现了代码的复用。

4.部署快,且生命周期成本低

MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员,前端工程师)集中精力于表现形式上。即,真正意义上实现了前后端分离开发。实现专业的人员干专业的工作,大大缩短开发周期。

5.可维护性高

分离视图层和业务逻辑层也使得WEB应用更易于维护和修改。


二、MVC详解

1.MVC经典模式

M:

在经典MVC模式中,M代表的是模型,表示的是业务规则。在项目开发中,M代表的是实体模型,和service服务层,以及对数据库进行操作的dao层和它的实现类daoimpl层

V:

在经典模式中,V代表的是视图层,即直接和用户进行交互操作的页面就是视图层,无论是MVC经典模式还是在框架中(例如:SpringMVC),V的定义一直是最清晰直观的。在Servvlet-JSP技术开发中,V就代表的是JSP页面。

C:

C代表的是控制层,即控制请求转发和响应的层次。在经典MVC开发模式中C就是Servlet,它决定了我们的视图层传过来的数据和请求要传给业务层的哪一个方法来实现,并负责获得业务层处理请求完之后的返回值传回前端。在MVC框架中,C往往是Controller来充当。

2.MVC设计模式和MVC框架的区别

需要注意的是,MVC设计模式和MVC框架并不相同,初学者往往会觉得MVC就囊括了MVC框架。其实不然。
区别:

框架通常是代码重用,而设计模式是设计重用,架构则介于两者之间,部分代码重用,部分设计重用,有时分析也可重用。

框架与设计模式虽然相似,但却有着根本的不同。设计模式是对在某种环境中反复出现的问题以及解决该问题的方案的描述,它比框架更抽象;框架可以用代码表示,也能直接执行或复用,而对模式而言只有实例才能用代码表示;设计模式是比框架更小的元素,一个框架中往往含有一个或多个设计模式,框架总是针对某一特定应用领域,但同一模式却可适用于各种应用。可以说,框架是软件,而设计模式是软件的知识。

根据天极网资料显示:基于Web的MVC framework在J2EE的世界内已是空前繁荣,TTS网站上几乎每隔一两个星期就会有新的MVC框架发布,比较好的MVC,老牌的有Struts、Webwork。新兴的MVC 框架有Spring MVC、Tapestry、JSF等。这些大多是著名团队的作品,另外还有一些边缘团队的作品,也相当出色,如Dinamica、VRaptor等,这些框架都提供了较好的层次分隔能力,在实现良好的MVC 分隔的基础上,通过提供一些现成的辅助类库,同时也促进了生产效率的提高。 ----------《百度百科》


以上是关于三层架构 是设计模式吗的主要内容,如果未能解决你的问题,请参考以下文章

MVC模式与三层架构的区别

Java单体应用 - 架构模式 - 01.三层架构

Java单体应用 - 架构模式 - 01.三层架构

Web开发之三层架构

架构-三层架构:三层架构

java三层架构