美國交流電插頭(2頭)沒法插到歐洲壁式插座(3孔)bash
解決方法是在中間環節用適配器轉化下搞定。測試
將一個藉口轉化成另外一個接口this
#spa
package designpattern.adapter; public interface AmericanPlug { public void desc(); public void func(); }
#code
package designpattern.adapter; public interface EuropePlug { public void desc(); public void func(); }
##blog
package designpattern.adapter; public class AmericanPlugImpl implements AmericanPlug{ public void desc() { System.out.println("American"); } public void func() { System.out.println("American two plug"); } }
##接口
package designpattern.adapter; public class EuropePlugImpl implements EuropePlug{ public void desc() { System.out.println("EuropePlug"); } public void func() { System.out.println("EuropePlug three plug"); } }
###three
package designpattern.adapter; public class AmericanAdapter implements EuropePlug{ AmericanPlug americanPlug; public AmericanAdapter(AmericanPlug americanPlug) { this.americanPlug = americanPlug; } public void desc() { americanPlug.desc(); } public void func() { System.out.println("Before adapter"); americanPlug.func(); System.out.println("After adapter"); } }
測試it
package designpattern.adapter; public class Test { public static void main(String[] args) { System.out.println("AmericanPlug---------"); AmericanPlug americanPlug = new AmericanPlugImpl(); americanPlug.desc(); americanPlug.func(); System.out.println("\nEuropePlug---------"); EuropePlug europePlug = new EuropePlugImpl(); europePlug.desc(); europePlug.func(); System.out.println("\nAmericanAdapter---------"); AmericanAdapter americanAdapter = new AmericanAdapter(americanPlug); americanAdapter.desc(); americanAdapter.func(); } }
輸出class
AmericanPlug--------- American American two plug EuropePlug--------- EuropePlug EuropePlug three plug AmericanAdapter--------- American Before adapter American two plug After adapter Process finished with exit code 0