设计模式:适配器模式

适配器:字面理解就是对于原有的两个物品不匹配或者不能共用,通过第三方去连接,最终能达到一起作用的效果;

例如:家用的两孔插头,和三口插头的电器,在没有第三方的时候,两个物品之间根本不能结合,需要个转换器,三角插头才能够使用。

在软件开发中,项目初期写了一个接口,里面有几个方法,这个接口已经被别的类实现,运行在项目中了,项目后期有新的需求了,需要一个新的方法,但是需要兼容老接口的方法,那么问题来了,是在老接口里面添加方法还是重新开启一个接口呢? 在一般情况下,都不会去修改一个已经运行在线上的系统,那么目前的形势就只能新加一个接口;

那么这两个接口怎么结合起来呢?

老的接口以及实现类:

public interface LogFileOperateApi {
    public List<LogModel> readLog() throws IOException;

    public void writeLog(List<LogModel> list) throws FileNotFoundException, Exception;
}
public class LogFileOperateImpl implements LogFileOperateApi {
    private String logFileNamePath = "AdapterLog.log";

    public LogFileOperateImpl(String logFileNamePath) {
        this.logFileNamePath = logFileNamePath;
    }
    @Override
    public void writeLog(List<LogModel> list) throws FileNotFoundException, Exception
    {}
    @Override
    public List<LogModel> readLog() throws IOException {}

新的接口,需要适配或者同是使用老的接口:
 

public interface LogDBOperateApi {
    void update(LogModel logModel);

    void delete(LogModel logModel);
}

那么就可以使用适配器模式去实现:

public class Adapter implements LogDBOperateApi {
    LogFileOperateApi logFileOperateApi;

    public Adapter(LogFileOperateApi logFileOperateApi) {
        this.logFileOperateApi = logFileOperateApi;
    }

    @Override
    public void update(LogModel logModel) {
    }

    @Override
    public void delete(LogModel logModel) {
    }
}

客户端测试类:

public class AdpterTest {
    public static void main(String[] args) {
        LogFileOperateApi logFileOperateApi = new LogFileOperateImpl("");
        LogDBOperateApi  logDBOperateApi = new Adapter(logFileOperateApi);
        try {
            logDBOperateApi.readLog();
            logDBOperateApi.update();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

有个问题:如果LogFileOperateApi 被多个类继承,并且使用在spring中,这个适配器模式该怎么用呢?

转载于:https://my.oschina.net/u/3300098/blog/1592359

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值