HMVC
![](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/4/4f/Jw0721hmvc14.gif/350px-Jw0721hmvc14.gif)
HMVC(Hierarchical-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 结构。