您的位置:首页 > 其它

Prism学习历程二、设计概念

2010-08-06 22:57 225 查看
UI Composition组合UI





如上图,该界面有六个View组合而成,各个View之间具有低藕合,轻依赖。他们之间可以通过Services,Command event进行交互。

布局





上图是布局的概念图,在Shell上定义了两个Region,Navigation和Main。订单列表的View被注入Navigation区域,订单View被注入Main区域。

命令系统

分为Command Delegation和Command Composition









这里的命令和WPF的不太一样,用起来也麻烦的多,通过DelegationCommand和CompositionCommand二个泛形类进行

如下代码

public OrderPresentationModel()
{
SaveOrderCommand = new DelegateCommand<object>(this.Save, this.CanSave);
DeliveryDate = DateTime.Now;
PropertyChanged += this.OnPropertyChangedEvent;
Validate();
}


通过构造函数指定Save方法为SaveOrderCommand的执行方法,当命令Execte时会调用该方法,CanSave方法为命令的CanExecte方法。外界能过SaveOrderCommand进行交互。

CompositionCommand通过RegisterCommand方法注册子命令,如果有一条子命令的CanExecte为false则整个组合命令不能执行。

事件系统

分成Event Service和Event Aaaregation









模块之间通过服务接口进行交互,模块之间不直接依赖,这和标准的.NET事件不同,Event Aaaregation类似,只是一个多个事件的组合服务。

模块化设计的好处

简化模块,定化高内聚低藕合的模块,模块间通过清晰的接口进行交互

模块可以独立开发布署

从不同的地方加载模块

最小化下载时间,下载时先下载启动必须的模块,其它模块在后台下载

最小化启动时间,可以运行时动态加载模块,减少程序的启动时间。

模块的概念图





内容都相对好理解,里面还针对Stock Trader 讲解了模块化设计的例子。

Container这部分参见Untity Application Block,

Multi-Targeting是讲在WPF和Silverlight之间最大化复用代码,由于WPF和Silverlight不兼容,并不共享assembly,只能共享代码,由于silverlight的API只是.net的子集,为了共享代码你可能需求变通的方法来实现某种功能,如果你只使用基本用户控件也可以在他们之间共享View。

总之复用代码并不是简单。

由于只是简单的概念介绍,打算到技术概念的时候再展现代码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: