这两天玩了一下cairngorm,觉得非常挺有意思的。
一开始接触cairngorm的时候,看了它的例子程序,觉得非常恶心。哇塞,不就是把一个简答的功能复杂化吗?而且复杂得很离谱,就一个添加对象的功能,从事件生成到记录数据,一共分了event, controller, command, delegate好几层,如果跟spring,hibernate整合,加上后台事务处理还有数据持久化,那就还得多加两层,然后整个系统的架构就真的想一座摩天大楼了。
鉴于这个n层塔,本来以为学习用cairngorm要挺花时间的,但玩起来发现,其实挺好上手的。这个MVC框架,虽然层多,但逻辑非常清晰,上层到下层如何交互,都有一个明确的思路。这种思路,这种架构,足以应付千变万化的前端开发。接下来让我描述一下一下思路吧:
首先描述一下cairngorm的分层,还有层与层之间的DTO
view —(valueobject, event)— control —(command, delegate)— model
(PS: 红色为软件层,括号里为消息)
view层就是通常的界面,当用户在界面操作时,会产生相应的事件,在事件里可以存储相应的vo,该事件必须继承cairngomEvent。
cairngormEvent发出后,FrontController自动接收event,然后把event映射为相应的command。其中必须注意,事件中不同的类型都要做相应的映射,否则cairngorm无法检测。
command是自定义的,但必须实现icommand, iresponder接口。command映射成功后,然后就根据实现了的execute方法执行事务了。如果要实现跟后台的数据交互,就需要再多建一个delegate对象,主要用于后台数据传输。
其实cairngorm就那么简单,越玩越好玩了。。。