適配器模式有兩種:
1.第一種
適配後的程式調用 的介面
package AdapterDesign1;public interface Target {void get18V();void get33V();void get0V();}
被適配的對象
package AdapterDesign1;public class Adaptee {protected int get220V(){return 220;}}
適配器
package AdapterDesign1;public class Adapter extends Adaptee implements Target {@Overridepublic void get0V() {//不需要家用點提供可直接返回,即返回0System.out.println("無電壓");}@Overridepublic void get18V() {System.out.println("通過適配器將"+this.get220V()+"適配為18V");}@Overridepublic void get33V() {System.out.println("通過適配器將"+this.get220V()+"適配為33V");}}
測試方法:
package AdapterDesign1;public class MyMain {/** 適配器模式 類比: 電來源配接器 adaptee:家用點220V Target:獲得安全電壓,18V Adapter:電來源配接器 */public static void main(String[] args) {Target t=new Adapter();t.get18V();t.get33V();}}
2.第二種
適配後的程式調用 的介面
package AdapterDesign1;public interface Target {void get18V();void get33V();void get0V();}
被適配的兩個adaptee對象
package AdapterDesign2;public class Adaptee1 {@Overridepublic String toString() {return "交流";}protected int get220V(){return 220;}}
package AdapterDesign2;public class Adaptee2 {@Overridepublic String toString() {return "直流";}protected int get220V(){return 220;}}
適配器
package AdapterDesign2;public class Adapter implements Target {Adaptee1 adaptee1;Adaptee2 adaptee2;public Adapter(){adaptee1=new Adaptee1();adaptee2=new Adaptee2();}@Overridepublic void get0V() {//不需要家用點提供可直接返回,即返回0System.out.println("無電壓");}@Overridepublic void get18V() {System.out.println("通過適配器將"+adaptee1+adaptee1.get220V()+"適配為18V");}@Overridepublic void get33V() {System.out.println("通過適配器將"+adaptee2+adaptee2.get220V()+"適配為33V");}}
測試代碼:
package AdapterDesign2;public class MyMain {/** 適配器模式 類比: 電來源配接器 adaptee:家用點220V Target:獲得安全電壓,18V Adapter:電來源配接器 */public static void main(String[] args) {Target t=new Adapter();t.get18V();t.get33V();}}