有了接口,有了实做的类别,接着就可以建立主程序了。我展开 Client 项目,加入对 Interface 和 Implementation 的参考。然后在主程序中加入以下的叙述 (当然要记得汇入必要的命名空间):
所以我们会透过 MessageReceiver 类别传回 Message 属性的值做为要处理的讯息。完成了这个简单的例子之后,我们就要把实做的成果和要求的模型结合在一起,看看我们的设计是否吻合架构面的要求。要把实做的项目和 Layer Diagram 中定义的层次相结合,方法很简单。回到 FundamentalLayer 层次图,然后从 solution explorer 中拖放 Client 项目节点到层次图的 Client 层次上。此时会看到层次图形的左上方出现个 1,代表它已经和一个项目绑定了。同样的方式,把 Interface 项目对映到 Interface 层次,Implementation 项目对映到 Implementation 层次。如果你选择其中一个已经绑定的层次,可以在 Layer Explorer (如果看不到可以从 Architecre 选单的 Window 命令中找到 Layer Explorer 把窗口调出来) 看到所绑定对象的细节。 有了项目和层次的对映后,接下来就有趣了。我们可以用鼠标右键点选层次图的表面,会看到快速选单中有一个 Validate Architecture 命令,我们执行这个命令;
进行架构验证
命令执行完成后会看到错误讯息,同时指示错误发生的区域。检视一下错误内容,会发现我们要求的层次依赖关系被破坏了,因为 Client 直接呼叫了 Implementation 的设计 (包括参照到 Implementation 项目,以及直接使用 MessageReceiver 类别:
点击放大
验证后的错误
解决之道是利用 Factory 样式,利用 Factory 建立以接口为主的方法,隔离实做和接口的关系。所以日后要传回的讯息接收器是针对不同的讯息来源进行处理,我们只要调整 Factory 方法,传回对应的接收器,原本的应用程序不用更动,因为它都是透过接口决定作业,只要实做了同样接口的类别都可以套用,增加程序的弹性和维护能力。所以我们展开 Creator 项目,加入对 Interface 和 Implementation 的参考,然后把 Class1 的名称改成 MessageCreator。它的程序内容如下:
MessageCreator 类别
紧接着我们移除掉Client项目中原本对 Implementation 项目的参考,然后加入对 Creator 项目的参考。并且更进一步的把原本的主程序更改为:
这样我们就不是直接透过实做的类别进行讯息的存取,而是经由 Factory 取得符合接口定义的内容。这回我们再做一个层次验证,可以看到成功通过设计。在这里用的是一个很小的例子,碰到大型的项目,还是可以透过相同的方式进行验证。确保我们的程序在架构层次面是遵循要求的。
本文链接:http://www.blueidea.com/tech/program/2010/7538.asp
出处:相关论坛
责任编辑:bluehearts
上一页 VS2010 Layer Diagram 实例教程 [2] 下一页
◎进入论坛网络编程版块参加讨论
|