什么是MVC软件架构模式_mvc架构的设计思路

什么是MVC软件架构模式_mvc架构的设计思路缘起:作为程序员,很容易天天被业务追逐着,抽不开时间修炼。有一天突然停了一下,忽地就会有一种怅然的感觉,过去的那些日子我学到了什么?有人很认真地说自己有10年经验,有人笑说你不过是一年经验用了10年而已。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

一、缘起

    作为程序员,很容易天天被业务追逐着,抽不开时间修炼。有一天突然停了一下,忽地就会有一种怅然的感觉,过去的那些日子我学到了什么?

有人很认真地说自己有10年经验,有人笑说你不过是一年经验用了10年而已。

二、师傅领进门

做人,做事,做架构师–架构师能力模型解析这篇文章,已经把架构师的能力总结好了,简单就是两个词,做人、做事。在上文中,作者提出了作为架构师做事需要做好的事情如下图,特别有道理,特别值得再细细品味一下

什么是MVC软件架构模式_mvc架构的设计思路


什么样的架构师是一个会做事的架构师?既能做设计、做决策、关键时刻还要自己能光着膀子上。也就是下得了厨房,上得了厅堂。

架构师是一个有全局观的设计师,有全局观的程序员。大家都在低着头走路的时候,他偶尔看了看天上的天象。

三、读万卷书、行万里路

架构模式的种类 一文把模式按层次分成三种:架构模式(Architectural Pattern)、设计模式(Design Pattern)、成例(Idiom)。成例有时称为代码模式(Coding Pattern)。这三者之间的区别在于三种不同的模式存在于它们各自的抽象层次和具体层次上。架构模式是一个系统的高层次策略,涉及到大尺度的组件以及整体性质和力学。架构模式的好坏可以影响到总体布局和框架性结构。设计模式是中等尺度的结构策略。这些中等尺度的结构实现了一些大尺度组件的行为和它们之间的关系。模式的好坏不会影响到系统的总体布局和总体框架。设计模式定义出子系统或组件的微观结构。代码模式(或成例)是特定的范例和与特定语言有关的编程技巧。代码模式的好坏会影响到一个中等尺度组件的内部、外部的结构或行为的底层细节,但不会影响到一个部件或子系统的中等尺度的结构,更不会影响到系统的总体布局和大尺度框架。 


今天只想探索最酷炫的架构模式。
架构的美只有架构师的眼中才能看得到。大家都看着的只是一堆砖泥瓦的时候,只有架构师最清楚这个地方以后会长出来一个多么漂亮的高楼。

main函数入口:
所有的系统,都有一个入口。大家都是从最简单的main函数开始,只是为何有的就只是print一个helloword,有的在做高密度的计算把CPU耗成100%,有的起了一个健壮的服务,有的建起了一个漂亮的花花世界。
就像还是种子的时候看起来,种子样子都是差不多的,最后长成的样子会是千差万别。
一定要看好main的入口,一个看不起眼的地方,也是万物萌芽的地方。

ApplicationContext:
好多系统都有一个ApplicationContext,小白的话可能没有注意到它。更多的人是瞥了一眼ApplicationContext,当作没存在直接上去就搞业务。这样的问题就是导致建的房子就像是一栋没有地基的房子,错乱搭建起来,杂乱无章。
很多系统ApplicationContext做了很多奇奇怪怪的初始化,然后这个系统的地基打好了。
然后很多人可以在上面工作了,很多很多人。
系统的地基就是系统的核心框架,就是在ApplicationContext里面加载完毕的。

基础服务和common组件:
系统的框架已经在ApplicationContext中搭好了。
框架上首先运行着系统的心脏,
也就是系统的基础服务和common组件,是工业时代的水和电。
很多系统都有一个ServiceManager.getService(xxx),或者是xxxFactory.createXXX()

业务单元:
系统框架已经搭好,基础服务和公共组件库也建好了以后,业务单元就可以百花齐放了。
很多人
可以同时用系统共享的水和电一起开工建房子了,然后直接一拼,联排别墅已经建好,这也太神速了吧。
所以很多人以为自己建房子挺快的,以为建一个房子很容易,其实他更像是在装修一个毛坯房。

一个架构模式描述软件系统里的基本的结构组织或纲要。 架构模式提供一些事先定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。
  • MVC 模式 一个架构模式常常可以分解成很多个设计模式的联合使用。 MVC 模式常常包括调停者(Mediator)模式、策略(Strategy)模式、合成(Composite) 模式、观察者(Observer)模式等。
  • Layers(分层)模式 有时也称 Tiers 模式
  • Blackboard(黑板)模式
  • Broker(中介)模式
  • Distributed Process(分散过程)模式
  • Microkernel(微核)模式

架构模式常常划分成如下的几种:

模块结构(From Mud to Structure)型。帮助架构师将系统合理划分,避免形成一个对象的海洋。 包括 Layers (分层)模式、 Blackboard (黑板)模式、 Pipes/Filters (管道/过滤器)模式等。

分散系统(Distributed Systems)型。为分散式系统提供完整的架构设计,包 括像 Broker(中介)模式等。

人机互动(Interactive Systems)型,支持包含有人机互动介面的系统的架构设计,例子包括 MVC(Model-View-Controller)模式、PAC (Presentation-Abstraction-Control)模式等。

Adaptable Systems 型, 支持应用系统适应技术的变化、 软件功能需求的变化。 如 Reflection(反射)模式、Microkernel(微核)模式等。


四、悟
最了解的软件架构模式就是分层和MVC和插件

为什么要分层?
分层就是为了分类,每一个层都有自己的职责。
东西多了就自然而然分层,物以类聚。
建个小屋是不需要分层的,房子高了才需要分层。每一层都有自己服务的层。B2就是停车场、B1是食堂、1层是大堂……
分层依据的主要设计原则就是:单一职责、依赖倒置

网络方面有熟知的 OSI 七层模型
应用程序框架方面有:持久层–〉服务层–〉应用层 

为什么要有MVC?
类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大

房子各式各样的设计都有,但是里面的组件是可以共享的
外面对接的是Controller,从数据服务取出数据拼成Model,画到View上去
应用层逻辑比较复杂,交互较多。
MVC以来的主要设计原则:单一职责、迪米特法则又叫最少知道原则、组合模式、接口隔离

为什么要插件框架?
每个人都可以把自己的房间打扮成自己想要的模样,
水和电都是共享的,但是房间确实不一样的,那就是各式各样的插件了

悟的时候,时光要慢了下来,偶尔的灵光一现自己也能感觉到。
别人看我是一个搬砖工,我觉得自己在建一座宏伟的教堂。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/183631.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 阻止mouseover冒泡行为_onmousedown是什么意思

    阻止mouseover冒泡行为_onmousedown是什么意思一.onmouseenter、onmouseoveronmouseenter事件在鼠标指针进入到绑定事件的那个元素上时触发。该事件通常与onmouseleave(在鼠标指针离开绑定事件的那个元素上时触发)事件一同使用。onmouseenter事件类似于onmouseover事件。唯一的区别是onmouseenter事件不支持冒泡。二.实例演示onmousemov…

  • 如何让虚拟机的Ubuntu上网?

    如何让虚拟机的Ubuntu上网?学习于韦工百问科技-悦己方能悦人,感谢!我的环境:unbuntu16.04特别注意:如果你使用的虚拟机和Ubuntu不一样,现象可能不一样,请具体情况具体分析。一、为什么要让虚拟机中的Ubuntu上网?想在线安装软件,下载git源码包,或者要用浏览器浏览网页二、虚拟机中的Ubuntu有几种上网方式?通常有2种,NAT、桥接三、NAT上网怎么用…

  • Canvas之translate、scale、rotate、skew方法讲解!「建议收藏」

    Canvas之translate、scale、rotate、skew方法讲解!「建议收藏」前面说Canvas大致可以分为三类:1.save、restore等与层的保存和回滚相关的方法;2.scale、rotate、clipXXX等对画布进行操作的方法;3.drawXXX等一系列绘画相关的方法;前面主要讲了drawBitmap方法,并举了一个星球浮动的栗子,在那个例子中,星球有大有小,需要移动,有时候可能需求上还需要旋转或错切,有了这些需求,我们就需要使用到与Canvas相关的translate、scale、rotate、skew这几个方法,平移、缩放、旋转、错切,这四个词听起

    2022年10月24日
  • useGeneratedKeys和keyProperty

    useGeneratedKeys和keyProperty<!–useGeneratedKeys:仅适用于insert和update)这会令MyBatis使用JDBC的getGeneratedKeys方法来取出由数据库内部生成的主键(比如:像MySQL和SQLServer这样的关系型数据库管理系统的自动递增字段),默认值:false。说白了就是使用自增主键,增加的时候自动使用自增主键–><!–keyProperty:使用主键自增之后,就无法拿到主键,但是需要使

  • 普林斯顿体系结构与计算机配件的关系研究_普林斯顿计算机博士

    普林斯顿体系结构与计算机配件的关系研究_普林斯顿计算机博士冯诺依曼、普林斯顿体系结构:输入输出设备不用说了吧。CPUCPU包括控制器和运算器。存储器这里的存储器实际上就是我们现在所说的内存。在学习单片机的时候,这个存储器可能是ROM,也可能是RAM,还可以扩展,但它一直都是半导体存储器件,属于直接与CPU交换数据的内存。下面的设备不在冯诺依曼体系结构图里硬盘而我们现在的硬盘则是磁性存储器件,它的读取速度比半导体存储器件要慢很多,并且它…

  • 极大似然估计和贝叶斯估计的联系(似然估计和最大似然估计)

    1.什么是参数在机器学习中,我们经常使用一个模型来描述生成观察数据的过程。例如,我们可以使用一个随机森林模型来分类客户是否会取消订阅服务(称为流失建模),或者我们可以用线性模型根据公司的广告支出来预测公司的收入(这是一个线性回归的例子)。每个模型都包含自己的一组参数,这些参数最终定义了模型本身。我们可以把线性模型写成y=mx+c的形式。在广告预测收入的例子中,x可以表示广告支…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号