代码改变世界

HMVC

  youxin  阅读(944)  评论(0编辑  收藏  举报

HMVCHierarchical-Model-View-Controller),也可以叫做 Layered MVC。顾名思义,就是按等级划分的 MVC 模式,简单的解释就是把MVC又细分成了多个子 MVC,每个模块就分成一个 MVC。

使用 HMVC 的好处就是可以降低各个功能模块之间的耦合性,提高代码复用性,使得每个功能都可以独立出来,每个模块都有自己的 MVC 结构,这就有点像 ActiveX 控件,每个控件都有自己的行为,控件之间互不影响。

CodeIgniter 结构示意

 application
        |- controllers
                |- controllers1.php
                |- controllers2.php
                |- ...
        |- models
                |- models1.php
                |- models2.php
                |- ...
        |- views
                |- views1
                        |- index.php
                        |- footer.php
                        |- ...
                |- views2
                        |- index.php
                        |- footer.php
                        |- ...
                |- ...

  上面的就是 CodeIgniter 原来的结构,如果是 HMVC 的话结构就是:

 application
        |- modules
                |- module1
                        |- controllers
                                |- controllers.php
                        |- models
                                |- models.php
                        |- views
                                |- index.php
                                |- footer.php
                                |- ...
                |- module2
                        |- controllers
                                |- controllers.php
                        |- models
                                |- models.php
                        |- views
                                |- index.php
                                |- footer.php
                                |- ...
                |- ....
        |- controllers
                |- ...
        |- models
                |- ...
        |- views
                |- ...

请注意,以上只是 CodeIgniter 框架的 HMVC 文件夹结构的一种表现形式,不代表 HMVC 必须以这个结构为准,需要根据不同语言或框架来设计其 HMVC 结构。

转自wikipedia。

编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示