打印

[其它] 从一个小例子看 MVC 设计

现在有个程序,功能是计算两个数的和。

viewComp (显示组件):
3个 TextInput,一个Button,一个加号的Shape

data(数据组件):
calculator,它有一个方法 sum(a:Number,b:Number):Number,返回参数a,b的和

然后我们需要写
[VIEW]
AppMediator
显示组件较为简单,只写这一个Mediator
[MODEL]
CalculatorProxy
这个proxy就一个方法,即sum
[CTRL]
StartupCpmmand :程序初始化,一般是把所有的Mediator和Proxy注册到系统里
SumCommand :即执行两数相加这个动作




谁来设计一下消息呢?就这迷糊!
上面的MVC各个块的设计也不一定合理,不合理的地方大家来给个说法吧


[ 本帖最后由 cyywill 于 2008-8-12 18:40 编辑 ]
AppFacade注册消息:
registerCommand("check_sum", SumCommand);

AppMediator里:
btn.addEventListener(MouseEvent.CLICK, onClick);
private function onClick(evt:MouseEvent):void{
    sendNotification("check_sum");
}

不过,这个例子不适合用MVC,杀鸡用牛刀。

[ 本帖最后由 flashlizi 于 2008-8-13 11:20 编辑 ]
我的设计mvc心得。。。

1  Mediator和Proxy 设计都比较简单。设计command,如同设计一个类的方法/动作。
就本例来说,startUp、sum,是这个App层面上的两个主要方法。
sum这个动作不是简单的计算,在APP层面上,它是包括收 1)集输入参数 2)计算(业务逻辑) 3)显示计算结果 这一整套动作。

2  Notification设计,则是APP层面上M、V、C向系统发送的消息。我甚至幻想把这种消息系统用到公司运作中,各个部门(决策,生产,销售)发出消息,处理消息,来进行公司的运作。
StartUpNotification: 准备工作(如加载完毕)完成后,通知系统启动。
SumNotification:通知系统进行sum动作,这个动作的触发可能是按钮点击、回车等。
(如果只设计这两个消息的话,系统没问题。有个问题则是Command必须知道Proxy和Mediator,增加了耦合性,这也是我模糊的地方,如果增加消息数量,降低耦合,则增加了消息系统的复杂度)

这个例子很简单,实际项目别用MVC,不过希望大家在这个例子上讨论重用性,健壮性等。
以PureMVC为MVC系统吧,大家比较熟
抛砖引玉。。。

TOP

还在为头像烦恼?还在为不能关注好友动态烦忧?快来蓝色理想家园吧!