桥接模式(Bridge)实现开放接口系统"/>
用桥接模式(Bridge)实现开放接口系统
桥接模式是设计模式中比较难的一种,其原文叙述是:“将抽象部分与它的具体实现部分分离,使它们都可以独立地变化,属于结构型模式。”表述也很抽象,其本质是通过一个抽象类A的构造函数传入一个Interface类B作为参数,这样在实现抽象类A和实例化时,传入抽象类B的实现类,可以实现抽象类A和B的灵活配置,如此完成实现两个部分都可以独立变化的目的。
在软件系统开发中,开放接口系统的设计是比较常见的。开放接口系统一般也包含两个独立变化的部分:
一是鉴权系统,一般包括了token解析、时间戳的对比等,而且往往对接的各种系统都有自己的鉴权方式,不同系统鉴权模式各不相同。
二是接口数据,一般用于发送http请求或者从对方返回的http响应中获取数据(这里暂不讨论通过监听http接口接受被动访问的接口,那些接口一般用controller实现)。
这两个部分很适合用桥接模式实现:
//抽象化的鉴权类
public Interface Authenticator{void OperationAuth();}//具体鉴权类
public class ConcreteAuth implements Authenticator{//生成Token并放到请求头String token = TokenCreater.createToken(SessionManager.getSK());Request.addHeader(token);
}//抽象的桥接类,包含了抽象的鉴权接口和抽象的HTTP请求方法
public abstract class AbstractionHttpInterface(){//这里通过构造函数,声明抽象的鉴权接口protected Authenticator auth;protected AbstractionInterface(Authenticator auth){this.auth = auth} //声明一个抽象的HTTP请求public abstract HTTPResponse SendHttpRequest(HttpRequest body);
}//实现一个具体的接口
class GetDeviceInterface extends AbstractionHttpInterface{//通过构造函数传递鉴权方法protected GetDeviceInterface(Authenticator auth) {super(auth);} //接口的请求体构造与实现方法public HTTPResponse SendHttpReques(HttpRequest body) {//这里写接口的具体请求方法return Request.sendRequest(body);}
}
注:以上代码并非完整代码,仅供理解原理。
使用:
//先声明鉴权方法Authenticator authMethod = new ConcreteAuth();//具体的设备数据获取类
AbstractionHttpInterface getDeviceRequest = new GetDeviceInterface(authMethod);getDeviceRequest.SendHttpRequest();
更多推荐
用桥接模式(Bridge)实现开放接口系统
发布评论