初探MVC架构

MVC是什麽

MVC是一种软件架构,着重在关注点分离,此架构分成三类

M : Model :
专注於业务逻辑,包括对於资料的处理、类别的定义、
V : View :
专注於画面呈现,可能会包含部分显示逻辑
C : Controller :
专注於控制逻辑,用来流程管控,像是呼叫Model、调用View等

网路上Google图片搜寻"MVC"时跳出一大堆图片,每个图片里的资料指向也都不太一样(单向、双向),对於我这个MVC新手真的是看的七荤八素,每个图片都点进去看看,最後有找到一个我比较能理解的图,并用他来说明。
https://ithelp.ithome.com.tw/upload/images/20210714/201140672LMyzWmh0U.jpg
图片来源 : https://docs.microsoft.com/zh-tw/archive/msdn-magazine/2009/july/restful-services-with-asp-net-mvc-and-xhtml

  1. Client来访问此网站
  2. 客户端经由Routing进到对应的Controller
  3. Controller呼叫Model执行对应的动作
  4. Model连接资料库并取得、处理资料
  5. Controller将资料传到对应的View
  6. 最後将View显示到Client端

(以上理解若有错误请不吝啬指导,谢谢)

为什麽要把M、V、C分开?

这是一个软件架构,为了将程序码关注点分离的架构,各自管好各自的领域。
工程师A负责Model,他是逻辑专家,正确的抓取、分析、处理资料。
工程师B负责Contorller,他调用正确的Model并将资料传给View。
工程师C负责View,她把画面用的美美的,只要等待资料的到来把它显示就好。
(单一职责原则)

某天要修改资料的处理逻辑,怎麽办呢?
只要找"工程师A"请他修改,而工程师A只要在Model内处理完就好,Contorller呢?View呢?没它们的事。
画面丑呢?改View就好。


<<:  想知道问题出在哪 在线等

>>:  OpenID Connect

Day 30. 参赛心得

原本不打算参加今年的活动,但还是在开始报名後点了,画面停在题目栏许久,想想要带给大家甚麽不同的东西,...

Laravel8_多重身份验证(第一部分)

第一部分(建立档案以及设定资料库) composer create-project laravel/...

DAY5 速谈flex gride布局、定位、响应式

为了加快进度,我要快速带过flex、gride布局、定位和响应式,帮你系个安全戴,要飙车罗~~ fl...

Day 0x10 - 整理解密函数与 Webhook api

0x1 前言 昨天确认接到讯息回覆了,今天来把解密函数跟 receive_msg 整理一下 0x2 ...

110/07 - 建立自己的 ResultContracts

前面讲完官方的14种Contracts,但我们也能建立属於自己的Contracts,以下范例是实作一...