快速业务通道

.NET初学者架构设计指南(三)设计模式

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-05-22
一个企业,他的营销网络是由下面一些元素组 成的:公司,市场部,直销店,代理商,自由代理人,营业员。如同下面的情况:

.NET初学者架构设计指南(三)设计模式

公司按照行政区域建立了多个市场部,市场部建立了自己的直销店,同时也 与很多代理商和独立代理人进行合作,直销店和代理商雇用了营业员。每天公司需要对每个销售网点的 情况进行查询和分析,需要知道他们定下了多少订单、收了多少货款、发展了多少新的客户。

这 是一个比较复杂的结构关系,网点类型比较多,他们的销售方式差异很大,各类数据统计的方式也不同 。并且在统计一些数值的时候,需要把下属网点的数量加起来,再加上自身的数量。如果采用组合模式 ,就可以解决这种问题。

.NET初学者架构设计指南(三)设计模式

我们可以设计一个类,叫做销售单位(SaleUnit)。这个类是他本身的一个 聚合,可以通过一个集合成员访问到他下属的单位。并且他的每一种下属单元也是SaleUnit的子类。各 种销售网点统计数据的方式是不同的:有的数据保存在数据库表里面,经过一些统计运算可以得到;有 的直接放在数据表的某个字段里面,直接查出来就可以了;还有的是每天发过来的一个Excel电子表格。 对于每一种不同的销售网点,都可以使用一致的接口对他们进行访问,得到需要的数据。

组合模 式可以很精确的反映销售网点间的聚合关系,并且对查询和统计提供了非常一致的接口,调用者不必区 分具体的网点类型。类似这样的情况,当我们发现需求中一些对象具有聚合关系,并且我们希望对他们 做一些共同的事情,就可以采用组合模式。

现在产生了一个严重的问题:是的,调用一个对象的 确实没有必要去区分具体的网点类型了,但是他们是在哪里被创建的呢,创建的时候还是要区分网点的 类型,复杂的代码只是从一个地方转移到另一个地方罢了,这样做有什么好处呢?为了解释这个疑问, 下面会介绍另一个常见的模式:工厂模式(Factory)。

工厂模式用来彻底的断绝调用者和被调 用的具体类型之间的关系,他使用一个工厂创建具体的类型,调用者从工厂中取得对象的实例。调用者 既不需要知道对象是怎样被创建的,也不需要知道创建的是什么类型。下面通过一个例子说明一下工厂 模式的用处。

这是一个电气设备监控系统,他的一个任务是从安装在各处的传感器上采集各种设 备的运行数据,集中显示在监视器上。还可以在设备上定义告警条件,当采集到的数据满足告警条件的 时候,向监控人员发出告警,监视器上显示告警标志。基本的情况是这样的:

.NET初学者架构设计指南(三)设计模式

一个设备上可以有多个信号,比如一个变压器,上面可以有电压、电流、冷 却剂温度等各种信号,分别由不同的传感器采集。每个信号隔一段时间会采集到一个数据,有的数据是 直接采集到的,另一些是根据多个信号的情况计算出来的(比如一个电网环路上有n个节点,我们已经知 道了其中n-1个节点的电压,就可以计算出最后一个节点的电压),还有的数据是一个推测值(需要根据 一些经验数据进行推测)。传感器采集到信号数据以后,程序要判断这个数据的值,有时还要结合其他 的信号,判断是否满足告警的条件,发出告警。

数据采集是一项十分复杂的工作,需要监控的设 备种类繁多,数据意义复杂,传感器的通信方式也不相同。好在用户已经建设了了一个综合采集系统, 解决了设备的实时数据采集工作。综合采集系统与各种传感器进行通信,将采集到的实时数据不断的输 入到一个数据表里面。下面就是这个表里面的一些数据:

.NET初学者架构设计指南(三)设计模式

有了这么一个系统,直接采集数据的问题算是解决了。但是不同的信号类型 对这个数据的解释仍然是不同的,我们仍然要应付这个问题。粗略的划分一下,有下面三种信号:

1、模拟信号:从综合采集系统里面查到实时数据,然后加上一个单位(比如伏特、安培),就 可以显示了;

2、状态信号:需要定义一个状态描述。比如

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号