Day 1: 1131228一、目标:开发一个任务管理系统,并运用 MVC (model view controller)架构二、预计使用工具:(一)前端: JS的react - 对应 MVC 的 V 和 M(二)后端: java spring boot- 对应 MVC 的 C 和 M

三、功能:(一)使用者能够登入(二)输入需求输入要防止sql injection和输入错误提醒(三)串接资料库资料库设计(项目、内容、状态变动)(四)Dashboard进度条显示

四、今日学习点:什么是MVC?(一)定义:1.Model(模型):应用程式的数据或状态,负责处理业务逻辑。2.View(视图):使用者界面,显示数据和接受使用者互动。3.Controller(控制器):处理使用者请求和业务逻辑,并协调数据的流动。

(二)适用情境:1.多层次功能的中大型应用MVC的分层架构特别适合功能复杂、有多个模块的应用,因为它将数据、业务逻辑与视图分开管理。例如:• 电子商务网站: 包含用户管理、商品浏览、购物车、订单管理等多模块功能。• 内容管理系统(CMS): 例如WordPress或Drupal,允许用户创建、编辑和管理内容。• ERP系统: 涉及财务、供应链、客户关系等模块的企业管理系统。


  • 需要长期维护的项目• 特徵: 项目会随时间增加新功能、进行调整或修复。• 原因: MVC架构的模块化设计让开发者可以轻鬆地维护和扩展功能,而不影响现有代码。• 例子: 大型企业内部工具、社交媒体平台。

  • 团队合作的项目• 特徵: 由多名开发者协作完成,开发分工明确。• 原因: MVC分离了数据处理、业务逻辑和UI,使前端和后端团队可以独立工作,减少冲突。• 例子: 像Uber、Airbnb这样的应用程序,通常需要大规模协作来开发多个功能。

  • 需要多种视图的应用• 特徵: 相同的业务逻辑需要在多种平台或设备上呈现(如Web、Mobile App、API)。• 原因: MVC架构将Model与View分离,业务逻辑可以重用,而仅需针对不同平台设计视图。• 例子: 电子邮件系统(支持Web版和移动版)。

  • 数据密集型应用• 特徵: 须频繁处理、查询或更新数据,并根据数据生成视图。• 原因: MVC的Model层专注于数据逻辑和处理,能有效管理复杂的数据结构和操作。• 例子: 大型数据仪表板、股票交易平台。

  • 动态且互动性高的应用• 特徵: 应用需要根据用户输入进行实时响应和数据更新。• 原因: Controller层负责管理用户交互,Model层处理数据变更,View层则动态更新界面。• 例子:o 即时聊天应用o 任务管理工具(如Trello、Asana)

  • 高复杂度的Web应用• 特徵: 涉及用户认证、角色管理、REST API集成等。• 原因: MVC可以很好地组织这些功能,避免逻辑混乱。• 例子:o 学习管理系统(LMS)o 在线预约系统(如医疗预约、餐厅订位)
  • (三)优点:

  • 清晰的分层结构• 分离关注点:将业务逻辑(Model)、用户界面(View)和交互控制(Controller)分开,使得每一层的职责更加清晰。• 易于维护:修改某一层的逻辑时,不会影响到其他层,减少代码耦合。
  • 便于测试• 独立测试:每一部分都可以单独测试,例如业务逻辑测试 Model,界面测试 View。• 单元测试:因为业务逻辑和界面分离,可以更专注于测试核心功能。
  • 可重用性高• Model 可重用:可以在不同的应用中重用相同的数据和业务逻辑。• View 可替换:例如,当需要更改界面设计时,只需修改 View 层,Model 和 Controller 可以保持不变。
  • 便于协作开发• 分工明确:前端工程师可以专注于 View,后端工程师专注于 Model 和 Controller。• 同时开发:多个开发人员可以并行工作,提高开发效率。
  • 可扩展性强• 支持增量开发:可以在现有结构上添加新功能,而不需要大幅修改现有代码。• 应用场景广泛:适用于大多数复杂的应用程序,尤其是那些需要频繁更新的项目。
  • (四)劣势:

  • 增加了初期的复杂性• 结构较重:需要设计和实现三个部分(Model、View、Controller),对于小型项目来说,可能显得过于繁琐。• 学习曲线:初学者需要理解每个部分的职责,以及它们之间的交互方式。
  • 需要更多的代码• 冗长的代码:将逻辑分开可能需要撰写更多的样板代码(boilerplate),尤其是在处理简单功能时。• 文件分散:应用可能包含大量的文件和类,管理起来可能会变得复杂。
  • 高耦合的 Controller 和 View• Controller 的负担:Controller 需要处理用户请求,与 View 进行交互,可能会导致 Controller 成为项目的瓶颈。• View 依赖 Controller:某些情况下,View 和 Controller 的交互可能过于紧密,增加了耦合。
  • 不适用于小型项目• 过度设计:对于简单应用,MVC 可能带来不必要的复杂性,导致开发效率降低。• 不必要的分层:小型应用通常可以直接将逻辑和界面(像是html里面的script)集成在一起,MVC 的分层反而成为一种负担。
  • 隐藏的性能问题• 频繁的数据更新:当 Model 发生变化时,必须通知 View,这可能导致性能瓶颈,尤其是数据量大时。• 同步挑战:确保 Model 和 View 的状态一致性需要额外的代码和逻辑。