經常遇到在處理一個類的時候(以參數方式傳入),另一個完全沒有繼承關係的類無法適應到該方法統一處理,這個時候就可以考慮使用適配器模式了。適配器模式顧名思義就是講一個無法被處理的類,通過適配成爲一個可以被處理的類。如下例子
//Fileter類包含一個打印的處理函數
public class Filter {
public void process() {
System.out.println("filter process.");
}
}
//Adaptor接口也有一個process函數,但是它和Filter沒半毛錢關係
public interface Adaptor {
void process();
}
//FilterAdaptor適配Adapor,使得它可以被當成Adaptor
//來被處理
public class FilterAdaptor implements Adaptor {
private Filter filter;
public FilterAdaptor(Filter filter){
this.filter = filter;
}
@Override
public void process() {
filter.process();
}
}
//MyTestAdaptor的apply方法只能處理Adaptor類型的對象
//但是通過適配器FilterAdaptor的包裝,相當於apply也可
//以處理Filter類型的對象
public class MyTestAdaptor {
//對Adaptor類進行處理
public static void apply(Adaptor adaptor){
adaptor.process();
}
public static void main(String[] args) {
apply(new FilterAdaptor(new Filter()));
}
}