- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
无线射频识别中间件技术探秘
3.1 封装、隔离处理流程中的各个节点
将中间件的业务流程中的各个节点分作不同模块处理,可以获得封装、高内聚、低耦合等优势,参见图5。
图5:中间件系统模块划分图。
其中,报告上传模块,负责实现不同类型的报告上传方式,如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为临时变量,具体取值在方法调用之前确定。
由面向对象的多态性特征,根据state字段目前所指向的对象来动态确定由ECState接口的哪一个具体的实现类的代码来完成工作。ECState接口的实现类根据实际情况确定是否需要在处理过程中修改ECSpec对象的状态属性(state),此处在应用状态模式时,需要设计多个定时器类来辅助状态机的跳转。
1 2 3
上一篇:非接触超低功耗红外接近感应技术
下一篇:爱特梅尔无线广播设计解决方案