適配器模式
適配器模式把一個類的接口變成客戶端所期待的另一種接口,從而使原本因接口不匹配而無法在一起工作的兩個類能夠在一起工作;
適配器的角色有目標角色(Target)、源角色(Adaptee)、適配器角色(Adapter);
類的適配效果:
- 適配器是源的子類,可以在適配器中置換掉源的方法;
- 只引用了一個適配器類因此只有一個路線到達目標類,問題得到簡化;
- 使用一個具體類把源適配到目標中來如果源以及源的子類都使用此類適配就行不通了(不是很理解這句話);
對象適配器效果:
- 一個適配器可以把多種不同的源適配到同一個目標;
- 與類的適配相比,想要置換方法就不容易了,要先有一個子類將源的方法置換掉,然後把源的子類當做真正的源進行適配;
- 置換方法不容易,但是增加新的方法很方便,且新方法同時適用於所有的源;
場景:想找一個A,但是隻找到了一個B,需要用適配模式將B適配成A
例:
當想要一個 JDBC 的接口實現,但是隻有 MySQL 類,那麼就將 MySQL 適配成 JDBC
缺省適配器模式
適配器模式
一種平庸化的適配器模式;
如果不準備實現一個接口的所有方法,可以製造一個抽象類,給出所有方法的平庸的具體實現,從這個抽象類再繼承下去的所有子類就不必實現所有的方法了。
缺省適配的實現:
缺省適配類應當是個抽象類,提供的方法應當是具體方法;
例:java.awt.event.WindowAdapter