栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

MVC模式

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MVC模式

文章目录
  • MVC模式
    • 1.MVC模式定义
    • 2.MVC模式优势
    • 3.MVC模式实践
      • 3.1 controller实现
      • 3.2 model实现
      • 3.3service实现

MVC模式

​ 距离上一篇文章已经过了很久了,感觉一年工作中人都变得懒散了,已经从事C++工作已经一年了,这一年中感觉没有写大型项目,都是在原有项目上修修补补,自己也感觉没有什么成就感,同时开始怀疑人生,在挣扎了一番之后,决定转学golang,这篇文章就谈谈我对MVC的领悟。

1.MVC模式定义

mvc模式是软件工程中的一种架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)、控制器(Controller)。

Model:主要定义一些数据存储结构以及对数据的访问和修改,比如对数据库的访问

View:用于数据展示,与用户进行交互

Controller:主要用于控制程序的流程,对请求做出响应,Controller有时也会较多重复的逻辑,为了让Controller层不那么臃肿,分离出了service层,用于处理相关的业务逻辑,降低Controller的耦合程度,Controller去做一些对数据分

2.MVC模式优势
  • 1.适合大型应用开发,将web应用程序逻辑划分和组织成大型应用程序变得非常容易,有助于快速找到代码的特定部分并允许轻松添加新功能

  • 2.支持异步方法调用,构建加载速度更快的web应用程序

  • 3.易于规划和维护,简化了测试过程,更容易调试大型系统

3.MVC模式实践

构建了一个增删改查项目进行实践,首先得描述一下多态,因为要实现多层之间的解耦,多态必不可少,golang中的多态是使用interface实现的(C++使用虚函数实现多态)

3.1 controller实现
type Controller interface {
	SelectController(c *gin.Context)    // 增删改查方法
	UpdateController(c *gin.Context)
	AddController(c *gin.Context)
	DeleteController(c *gin.Context)
}

type controller struct {
	Service service.Service    // Sevice接口
}

func NewController() Controller {    // 返回一个Controller方法
    							  // 此处为什么不返回结构体呢?
    							  // 如何返回定义一个新的控制器,上层代码也需要进行修改,返回接口能降低层级之间的耦合
	return &controller{
		Service: service.NewService(),
	}
}

// 方法具体实现
// to do 主要提取HTTP请求中字段,具体逻辑在service层实现

3.2 model实现
// 数据存储格式
type People struct {
	Name   string `json:"name"`
	Age    int    `json:"age"`
	Gender string `json:"gender"`
}

// 数据入库操作
type DataModel interface {
	SelectData(string) bool
	UpdateData(People) bool
	AddData(People) bool
	DeleteData(string) bool
}

type dataModel struct {
}

// 返回上层调用接口
func NewDataModel() DataModel {
	return &dataModel{}
}
3.3service实现
// 业务逻辑具体实现方法
type Service interface {
	Select(string) bool
	Update(models.People) bool
	Add(models.People) bool
	Delete(string) bool
}

type service struct {
	dataModel models.DataModel
}

// 为controller提供接口,实现具体的业务逻辑
func NewService() Service {
	return &service{dataModel: models.NewDataModel()}
}

// 实现具体的业务逻辑
func NewService() Service {
	return &service{dataModel: models.NewDataModel()}
}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/989805.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号