自然环境下传感器图片大全探索RFID中间件技术的应用二
在自然环境下,传感器图片大全展现了RFID中间件技术的应用(二)。为了避免后台应用系统,即中间件的客户端过分耦合,我们采用门面模式对系统内部、外部实现清晰的隔离。处理流程可参见图6所示的序列图。客户端仅与Facade类建立联系,如果Facade接口定义得足够清晰,客户端可以对中间件的内部实现一无所知,这体现了面向对象中的封装性。
类的设计参见源代码示例,从中可以看出,采用简单工厂模式能够在客户端不知情的情况下,灵活地替换API实现类的版本。中间件API接口MiddlewareAPI:public interface MiddlewareAPI { void define(String specName, ECSpec spec); void undefine(String specName); void subscribe(String specName, String uri); void unsubscribe(String specName, String uri); EPCReports poll(String specName); EPCReports immediate(ECSpec spec); }
工厂类APIFactory:public class APIFactory { public static MiddlewareAPI getAPIInstance() { } }
其中,规则状态接口ECState:public interface ECState { void subscribe(String specName, String uri); void unsubscribe(String specName, String uri); EPCReports poll(String specName);}
未被请求状态类ECStateUnrequested:public class ECStateUnrequested implements ECState {}
已被请求状态类ECStateRequested:public class ECStateRrequested implements ECState {}
激活状态类ECStateActive;public class ECStateActive implements ECState {}
规则类ECSpec:public class ECSpec { private ECStates state; public ECStates getState() {} public void setState(ECStates state) {}}
这样,在针对规则实施相应操作的时候,就可以直接把相应操作委派给其状态属性(ECStates)去做即可。比如,ECSpec 的subscribe操作,只需一行代码“state.subscribe(specnameuri)”即可。
通过Http方式发送报告的ReportSender接口实现类ReportSenderByHttp;通过Socket方式发送报告的ReportSender接口实现 类 ReportSenderBySocket;通过JMS方式发送报告 的 ReportSender 接口 实现 类 ReportSenderByJms:
最后,将这些策略模块结合起来,便能根据事件周期结束之后组装报告上传给规则预订者的需求进行适当调整和优化,以确保高效运行。在这个过程中,不论是HTTP、Socket还是JMS作为数据上传的手段,都不会影响核心逻辑处理模块,因为所有这些都由专门负责数据上传工作的一个独立模块来完成,这正是策略模式切换多种报告上传、命令下发方式的一种典型实践。