|
无线射频识别中间件技术基本的RFID系统一般由3部分组成:标签、阅读器以及应用支撑软件。中间件是应用支撑软件的一个重要组成部分,是衔接硬件设备如标签、阅读器和企业应用软件如企业资源规划(ERP)、客户关系管理(CRM)等的桥梁。 其中,报告上传模块,负责实现不同类型的报告上传方式,如HTTP、JMS等;API接口模块,负责隔离应用系统和中间件核心业务逻辑处理模块,向应用系统提供中间件API接口;中间件核心业务逻辑处理模块,负责中间件核心业务,包括数据接收过滤、数据分组、报告生成、规则对象的状态跳转等;阅读器通信模块,负责中间件系统与阅读器的通信。 3.2 门面模式、工厂模式对外部暴露API接口 为了避免后台应用系统,即中间件的客户端过分耦合,采用门面模式(Facade)对系统内部、外部实现清晰的隔离。处理流程可参见图6所示的序列图。客户端仅仅与Facade类建立联系,如果Facade接口定义得足够清晰,客户端可以对中间件的内部实现一无所知,这体现了面向对象中的封装性。 图6 客户端调用APT序列图 类的设计参见源代码示例,从中可以看出,采用简单工厂模式(Simple Factory)能够在客户端不知情的情况下,灵活地替换API实现类的版本。中间件API接口清晰地定义了中间件提供的操作,客户端只须知道工厂类(APIFactory)能够得到中间件API接口的实例即可。 中间件API接口MiddlewareAPI: publicinterfaceMiddlewareAPI{ 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: publicclassAPIFactory{ publicstaticMiddlewareAPIgetAPIInstance(){ } } API的实现类A: publicclassClient{ publicstaticvoidmain(String[] args) { MiddlewareAPI api = APIFactory.getAPIInstance(); api.define(a new spec, new EPCSpec()); } } 3.3 状态模式模拟规则的状态机 规则在其生命周期中拥有不同的状态,在每个状态对一系列操作都有着不同的表现,于是可以利用状态模式(state)来模拟规则的状态机,将不同状态的不同表现作为可变化因素封装起来,参见代码示例。 规则状态接口ECState: publicinterfaceECState{ voidsubscribe(StringspecName,String uri); voidunsubscribe(StringspecName,String uri); EPCReportspoll(StringspecName); } 未被请求状态类ECStateUnrequested: publicclassECStateUnrequestedimplements ECState { } 已被请求状态类ECStateRequested: publicclassECStateRrequestedimplements ECState { } 激活状态类ECStateActive: publicclassECStateActiveimplements ECState { } 规则类ECSpec: publicclassECSpec{ privateECStatestate; publicECStategetState(){ return state; } publicvoidsetState(ECStatestate) { this.state = state; } } 这样,在针对规则实施相应操作的时候,就可以直接把相应操作委派给其状态属性(ECState)去做即可。比如,ECSpec的subscribe操作,只需一行代码“state.suscribe(specName, uri);”即可。其中,specName、uri为临时变量,具体取值在方法调用之前确定。 责编:刘沙 微信扫一扫实时了解行业动态 微信扫一扫分享本文给好友 著作权声明:畅享网文章著作权分属畅享网、网友和合作伙伴,部分非原创文章作者信息可能有所缺失,如需补充或修改请与我们联系,工作人员会在1个工作日内配合处理。 |
推荐博客 |
|