天天看點

代理模式三:擴充卡模式

簡介

将一個接口轉換為用戶端或伺服器端所期待的接口,進而使兩個接口不相容的類可以在一起工作,​

​進階的接口轉換表現形式​

​。

代碼

  • 三方接口
public interface OriginalLogger {

    void d(int priority,String message,Object ... obj);
}
      
  • 三方接口實作類
public class OriginalLoggerImpl implements OriginalLogger {
    @Override
    public void d(int priority, String message, Object... obj) {
        System.out.println(String.format("OriginalLoggerImpl 日志列印記錄:%s",message));
    }

}
      
  • 目标接口

    即我們要将三方接口轉換為我們即将使用的目标接口

public interface NowLogFactory {

    void debug(Integer tag,String message);

}
      
  • 擴充卡

    要實作目标接口,建立三方接口實作類對象

public class NowLogFactoryimpl implements NowLogFactory {

   private OriginalLogger originalLogger;

    public NowLogFactoryimpl(OriginalLogger originalLogger){
        this.originalLogger=originalLogger;
    }

    @Override
    public void debug(Integer tag, String message) {
          originalLogger.d(1,message);
    }
}
      
  • 測試類
public class PatternTest {


    public static void main(String[] args) {

        NowLogFactory factory=new NowLogFactoryimpl(new OriginalLoggerImpl());
        factory.debug(1,"改變後的日志列印");
    }

}
      

總結

此設計模式較為簡單,使用面積較廣,常見的: 比如日志門面技術,slfj4j;

優點:可以進行代碼整合,用一套接口,底層可以用不同的實作類;