关于适配器模式

在学习适配器模式时,看到一篇文章讲得很易懂,应用场景明确.

https://www.ibm.com/developerworks/cn/java/j-lo-adapter-pattern/

此处也结合自己的理解,记录一篇文章,

1. 对象适配器

场景: 出现了一个新的接口, 但又想适配某个旧接口.

如: 原有写了一个文件类型日志操作接口 FileLogInterface, 里面的方法名为 doFileLog();

public interface FileLogInterface{
    void doFileLog();
}

//实现类
public class FileLogService implements FileLogInterface{
    public void doFileLog(){
        //具体业务代码省略
    }
}

 可是后来为了适应多种日志方式, 如数据库记录日志.开发了一个新的日志接口. FileInterface, 里面记录日志的方法名为 doFile(); 另外还增加了一些其他接口方法.

//新的日志接口
public interface FileInterface{
    void doLog();
    String getLogType();
    void doXXXX();
    //等等的接口
}

//数据库日志实现类
public class DBFileService implements FileInterface{
    pulbic void doLog(){
        LogBean bean = new LogBean("1","我是登陆日志");
        dao.insert(bean); //存储到数据库中
    }

    public String getLogType(){
        return "DBLog";
    }
    
    public void doXXX(){
        //省略代码...
    }
}

现在所有新的日志实现类都实现 FileInterface 接口, 可是原来的文件类型日志实现类也还能用, 又不想改(因为会影响旧的代码). 此处就使用一个适配器来适配.

FileLogAdapter. 在 doFile()中, 使用成员进行调用原有的doFileLog(),其他的接口方法, 按需实现.(如空实现, 抛异常等)

public class FileLogAdapter implements FileInterface{
    private FileLogInterface logger;
    public FileLogAdapter(FileLogInterface logger){
        this.logger = logger;
    }
    
    public void doLog(){
        logger.doFileLog(); //调用回原文件日志的实现
    }
    
    public String getLogType(){
        return "file";
    }
    
    public void doXXX(){
        //其他没有具体实现的接口.空实现
    }
}

在代码中需要调用适配器时,如下

public void doWork(){
    //业务逻辑....
    //记录文件日志
    FileLogInterface logger = new FileLogService();
    LogInterface newLogger =  new FileLogAdapter(logger);
    newLogger.doLog();
}

本文到此结束

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值