目录

  一、背景      

二、MVC框架简介

2.1、模型(Model)

2.2、视图(View)

2.3、控制器(Controller)

三、Qt的MVC框架设计

3.1、Qt中的模型(Model)

3.2、Qt中的视图(View)

3.3、Qt中的控制器(Controller)

四、MVC架构的优缺点

1、MVC的优点

(1).分离关注点:

(2).促进模块化:

(3).代码重用:

2、MVC的缺点

(1).学习曲线

(2).代码复杂性

(3).性能问题

五、MVC架构使用场景

六、总结


一、背景      

        合理的软件架构设计是确保项目可维护性、扩展性和灵活性的关键。MVC(Model-View-Controller)框架就是一种广泛应用于软件工程中的设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller),旨在分离内部业务逻辑和用户界面,这样不仅提高了代码的重用性,还提升了开发效率。下面我们就以Qt的实现为例,来深入探讨MVC三层架构。

二、MVC框架简介

2.1、模型(Model)

        模型是应用程序的核心部分,负责管理数据和业务逻辑。它直接与数据库交互,检索数据并处理前端的命令。

2.2、视图(View)

        视图是用户界面的部分,负责将数据以图形界面的形式展示给用户。它仅仅展示数据,不包含业务逻辑处理。

2.3、控制器(Controller)

        控制器作为模型和视图之间的中介,处理用户的输入,将命令传递给模型,并选择视图来显示模型的数据。

三、Qt的MVC框架设计

        Qt是一个跨平台的C++应用程序框架,广泛用于开发具有图形用户界面的应用程序。在Qt中,MVC框架的设计与经典MVC略有不同,它通常是以Model/View编程范式出现的。

3.1、Qt中的模型(Model)

        Qt为数据模型提供了QAbstractItemModel、QStandardItemModel等类,允许开发者定义自己的数据模型。例如,一个表格模型可以通过继承QAbstractTableModel来实现。

3.2、Qt中的视图(View)

        视图在Qt中通过各种View类来实现,如QListView、QTableView和QTreeView。这些视图类与模型类紧密配合,能够响应模型中数据的变化。

3.3、Qt中的控制器(Controller)

        在Qt中,控制器的角色通常由各种Widget来承担,比如按钮点击时的槽函数,可以看作是控制器的一部分,它接受用户的输入,并通知模型更新数据。

四、MVC架构的优缺点

1、MVC的优点

(1).分离关注点:

         MVC架构清晰地分离了表示层和业务逻辑层,使得开发、优化和测试各个部分变得更容易。

(2).促进模块化:

        由于分离,团队成员可以专注于他们的专长领域,前端工程师专注于视图,后端工程师专注于模型。

(3).代码重用:

        模型可以被多个视图复用,而视图和控制器也可以根据需要进行组合和重用。

2、MVC的缺点

(1).学习曲线

        初学者可能会发现MVC架构复杂且难以理解。

(2).代码复杂性

      在一些简单的场景下,使用MVC可能会增加不必要的代码和复杂性。

(3).性能问题

        在大型应用中,如果不恰当地管理模型和视图之间的通信,可能会导致性能问题。

五、MVC架构使用场景

        MVC架构非常适合复杂的应用程序,尤其是图形用户界面丰富的桌面应用或者需要清晰分层的大型Web应用。对于简单或者临时的小型项目,采用MVC可能是一个过度设计。

        三层架构的特点:

  • 1).数据库访问层(DAL)仅提供对数据库的CRUD操作,而不管操作后的结果,也不管逻辑过程(譬如同名用户,不合法用户名)。
  • 2).业务逻辑层(BLL)不会直接与数据库交互,他与数据库的交互是通过DAL提供的方法。在调用这些方法前,要加入自己的逻辑判断或者业务处理。另外业务逻辑层(BLL)还有可能不会去调用DAL层的方法,而是进行其他业务处理。
  • 3).用户界面层(UI)层是不会调用DAL层的,他只调用BLL层提供的方法,再由BLL层自己决定是否继续调用DAL层。

六、总结

       MVC三层架构在软件开发中提供了强大的设计模式,帮助开发者通过分离关注点来组织代码,提高了应用的可维护性和扩展性。

参考资料:

https://baike.baidu.com/item/MVC%E6%A1%86%E6%9E%B6/9241230?fr=ge_ala

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐