HMVCHierarchical-Model-View-Controller),也可以叫做 Layered MVC。顧名思義,就是按等級劃分的 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 結構。