定义
将一个接口转换为客户端所期待的接口,从而使两个接口不兼容的类可以在一起工作
使用场景
- 当需要使用一个现存的类,但它提供的接口与我们系统的接口不兼容,而我们还不能修改它时
- 当多个团队独立开发系统的各功能模块,然后组合在一起,但由于某些原因事先不能确定接口时。
实例
/**
* 适配器模式:讲一个接口转换为客户端所期待的接口,从而使两个接口不兼容的类可以在一起工作
* 使用场景:
* 当需要使用一个现存的类,但他提供的接口与我们系统的接口不兼容,而我们还不能修改他时
* 当多个团队独立开发系统的各功能模块,然后组合在一起,但由于某些原因事前不能确定接口时
*
* @author
* @date 2023/02/01 14:04
**/
public class LogAdapter implements LogFactory{
private NbLogger nbLogger;
public LogAdapter(NbLogger nbLogger){
this.nbLogger = nbLogger;
}
@Override
public void debug(String tag, String msg) {
Objects.requireNonNull(nbLogger);
nbLogger.d(1, msg);
}
public static void main(String[] args) {
LogFactory logFactory = new LogAdapter(new NbLoggerImp());
logFactory.debug("Test","我将使用牛逼logger打印log");
}
}
interface LogFactory {
void debug(String tag, String msg);
}
// 第三方库提供的日志功能,但不兼容
interface NbLogger {
void d(int priority, String msg, Object ... obj);
}
class NbLoggerImp implements NbLogger {
@Override
public void d(int priority, String msg, Object... obj) {
System.out.println(String.format("牛逼logger记录:%s", msg));
}
}