一、MVP(Model-View-Presenter)设计模式
用例:实现页面上点击一个按钮,然后呈现Model层返回的消息”HelloWorld”
作用过程:
①用户在屏幕上点击按钮(一个动作action),一个通信事件就被触发。
②后台的事件监听器(event listener)处理这个事件(event)。
③访问数据库(access data)并返回
④用户界面元素(UI element)被改变,相应的把视觉反馈(visual feedback)呈现给用户
二、MVVM(Model-View-ViewModel)设计模式
作用过程:
①用户在屏幕上点击按钮(action)触发一个事件(event)
②绑定器(Binder)感知到相应的事件(corresponding event)被触发
③绑定器(Binder)在ViewModel中找到相应的动作逻辑(action logic)并调用它
④动作逻辑(action logic)从Model层访问数据库(accessdata),并更新ViewModel中相应的属性
⑤ViewModel通知(notify chnage)绑定器(Binder) 一些属性被改变
⑥每当有属性被改变,绑定器(Binder)就会从ViewModel中加载数据(loaddata)
⑦绑定器(Binder)改变相应的UI组件来给用户呈现视觉反馈(visual feedback)很明显,UI设计者必须至少告诉绑定器(Binder)以下几点:
◆ 用到了哪些UI事件(UI event)来触发哪些动作逻辑(action logic)。(这样Binder才知道调用什么方法)
◆ 用到了哪些UI属性(UI attribute)来显示哪些数据。(这样Binder才知道加载什么数据,更新什么数据)
◆ 用到的哪些UI属性(UI attribute)是用来输入到数据库的。(这样Binder才知道要保存哪些属性)
在ZK绑定(ZK Bind)中用到了ZK注解(annotation)来做这些工作
①当用户按下了”Show”按钮,onClickevent就被触发到了Binder
②ZK Binder通过指定的ZK 注解 @command('showHello')在ViewModel中找到命令的名字(commandname)为showHello的方法。
③Binder在HelloViewModel.java中调用showHello()方法,并且改变message的属性值为”HelloWorld”。
④因为NotifyChange,所以Binder通过调用HelloWorldModel.java的getMessage()方法从vm.message中加载数据,并改变标签label的属性值。
最后”Hello World!”就呈现到了客户端用户