MVC/MVVM/MV 對比#
scale 2
!theme vibrant
namespace mvc {
namespace ui {
class 控制器
class 視圖
}
namespace data {
class 模型
}
控制器 --> 視圖 : 更新和監聽
控制器 --> 模型 : 獲取和設置
視圖 --> 模型
}
namespace mvvm {
namespace ui {
class 視圖
class 視圖模型
視圖 --> 視圖模型 : 數據綁定
}
namespace data {
class 模型
視圖模型 --> 模型 : 獲取和設置
}
}
namespace mv {
namespace data {
class 有狀態模型
class 模型
有狀態模型 --> 模型
}
namespace ui {
class 視圖
視圖 --> 有狀態模型 : 觀察和操作
}
}
MVX#
- 優先使用有狀態模型
- 如果無法修改有狀態模型或僅修改 ui 層,則使用視圖模型
- 如果沒有數據綁定框架,使用控制器
scale 2
!theme vibrant
namespace data {
class 有狀態模型
class 模型
有狀態模型 --> 模型
}
namespace ui {
class 視圖模型
class 視圖
class 控制器
控制器 --> 視圖 : 更新和監聽
控制器 --> 視圖模型 : 獲取和設置
視圖 --> 視圖模型 : 數據綁定
視圖模型 --> 有狀態模型 : 觀察和操作
視圖 --> 有狀態模型 : 觀察和操作
}