适配器模式实现示例
工作中遇到过不少设计模式,大多是工厂模式见的比较多。因为上个项目刚刚遇见了适配器模式,于是自己写个demo来记录一下,首先说一下使用背景,上个项目是个保险公司出单平台,对接了多家保险公司,投保过程中,大体流程是一样的,但是每家公司又有具体的实现,所以这里通过内部定义的保险公司业务代码作为区分实现根据不同保险公司适配不同service实现类,接下来是示例:
首先,创建一个项目,目录结构如下:
ServiceConfig类初始化配置类,主要是将各个service实例化并存到一个map,并提供一个获取实例的get方法,代码如下:
/**
* 配置类,实现初始化配置
*/
public interface ServiceConfig {
/**
* 初始化配置方法
*/
void InitConfig();
/**
* 根据指定类型获得实现类
* @param type
* @return
*/
FatherService getFatherService(String type);
}
public class ServiceConfigImpl implements ServiceConfig {
private Map<String, BizInterface> serviceMap = new HashMap<>();
@Override
public void InitConfig() {
System.out.println("初始化配置开始=========================");
serviceMap.put("one", new PatternOneService());
serviceMap.put("two", new PatternTwoService());
serviceMap.put("three", new PatternThreeService());
System.out.println("初始化配置结束=========================");
}
@Override
public FatherService getFatherService(String type) {
return serviceMap.get(type);
}
}
FatherService是顶层接口,
public interface FatherService {
/**
* 公用方法一
*/
void BizFunctionOne();
/**
* 私有方法二
*/
void BizFunctionTwo();
}
BizInterface是实现了FatherService的部分公用方法的抽象类,主要是为了实现一一些通用方法,
/**
* 所有服务类的抽象层,实现一些公用逻辑
*/
public abstract class BizInterface implements FatherService {
@Override
public void BizFunctionOne() {
System.out.println("公用方法一执行了===================");
}
}
接下来,就是具体的service类,可以根据自己的业务,实现具体的方法,
public class PatternOneService extends BizInterface implements FatherService {
@Override
public void BizFunctionTwo() {
System.out.println("模板一执行私有方法一");
}
}
public class PatternTwoService extends BizInterface implements FatherService {
@Override
public void BizFunctionTwo() {
System.out.println("模板二执行私有方法二");
}
}
public class PatternThreeService extends BizInterface implements FatherService {
@Override
public void BizFunctionTwo() {
System.out.println("模板三执行私有方法三");
}
}
最后是一个测试类,
public class TestAdapter {
public static void main(String[] args) {
// 执行初始化
ServiceConfig serviceConfig = new ServiceConfigImpl();
serviceConfig.InitConfig();
// 适配模式一
serviceConfig.getFatherService("one").BizFunctionOne();
serviceConfig.getFatherService("one").BizFunctionTwo();
//适配器模式二
serviceConfig.getFatherService("two").BizFunctionOne();
serviceConfig.getFatherService("two").BizFunctionTwo();
//适配器模式三
serviceConfig.getFatherService("three").BizFunctionOne();
serviceConfig.getFatherService("three").BizFunctionTwo();
}
}
代码输出结果如下,
到此,简单的适配器模式就已经结束了,个人觉得适配器模式在日后的开发中使用场景应该很多,所以做个demo记录,以便以后参考。