MVVM
MVVMModel-View-ViewModel
,它是MVC的改进版。
MVVM优点:
- 低耦合。视图(
View
)可以独立于Model
变化和修改,一个ViewModel可以绑定到不同的View
上,当View
变化的时候Model
可以不变,当Model
变化的时候View
也可以不变。 - 可重用性。你可以把一些视图逻辑放在一个
ViewModel
里面,让很多view重用这段视图逻辑。 - 独立开发。开发人员可以专注于业务逻辑和数据的开发(
ViewModel
)。 - 可测试。界面素来是比较难于测试的,测试可以针对
ViewModel
来写。
AWTK-MVVM
AWTK-MVVM 是一套用C语言开发的,专门为嵌入式平台优化的 MVVM 框架。它实现了数据绑定、命令绑定和窗口导航等基本功能,使用 AWTK-MVVM 开发应用程序,无需学习 AWTK 本身的 API ,只需学习绑定规则和模型的实现方式即可。
AWTK-MVVM无需手动编写和更新ViewModel
的代码,它提供一个主动代码产生器,只需在编写 Model
的代码时,按照固定的规则来编写注释(详细注释规则请点击查看model.md),就会根据Model
的代码自动生成更新ViewModel
。
前置步骤
一、编写Model
编写 Model
的代码,并按照model.md的规则来编写注释。
books_manager_model.h:
/**
* @class books_manager_model_t
*
* @annotation ["model"]
* 图书管理者模型。
*
*/
typedef struct _books_manager_model_t {
/**
* @property {int32_t} find_type
* @annotation ["readable", "writable"]
* 当前查找书籍方式。
*/
int32_t find_type;
/* private */
books_manager_t* books_manager;
} books_manager_model_t;
/**
* @method books_manager_model_create
* 创建books_manager_model对象。
*
* @annotation ["constructor"]
* @return {books_manager_model_t*} 返回books_manager_model对象。
*/
books_manager_model_t* books_manager_model_create(void);
/**
* @method books_manager_model_destroy
* 销毁books_manager_model对象。
*
* @annotation ["destructor"]
* @param {books_manager_model_t*} model books_manager_model对象。
*
* @return {ret_t} 返回RET_OK表示成功,否则表示失败。
*/
ret_t books_manager_model_destroy(books_manager_model_t* model);
二、利用工具生成ViewModel
请查看model.md的9.3小节:代码生成器。
三、注册ViewModel并通过导航器打开View
ret_t application_init(void) {
mvvm_init();
/* 其他初始化设置 */
/* ... */
/* 注册ViewModel,ViewModel名称为"books_manager_model" */
view_model_factory_register(<