http://www.books.com.tw/products/0010750585
chap10.
轉接器模式 Adapter
目的:將個介面轉換成另外一個介面,讓原本與客戶端不能相容的介面可以正常工作
package com.ssc24.chap10.demo01; public class Adapter implements Wizard { private Archer archer; public Adapter(Archer archer) { this.archer = archer; } @Override public void fireBall() { System.out.println("在弓箭上包一層布->淋上花生油->點火"); this.archer.shot(); System.out.println("火球飛出去了"); } }
package com.ssc24.chap10.demo01; public interface Archer { void shot(); }
package com.ssc24.chap10.demo01; public class NormalArcher implements Archer { public NormalArcher() { System.out.println("產生 一個弓箭手 "); } @Override public void shot() { System.out.println("射箭"); } }
package com.ssc24.chap10.demo01; public interface Wizard { void fireBall(); }
package com.ssc24.chap10.demo01; import static org.junit.Assert.*; import org.junit.Test; public class AdapterClient { @Test public void test() { System.out.println("===轉接器模式測試==="); System.out.println("我們需要火球才能把樹上的蜂窩砸爛,糟糕的是隊伍中沒有法師"); System.out.println("幸好隊伍中有一個弓箭手跟馬蓋先工具包,讓弓箭手也能發火球"); Wizard wizard = new Adapter(new NormalArcher()); wizard.fireBall(); } }
/** ===轉接器模式測試=== 我們需要火球才能把樹上的蜂窩砸爛,糟糕的是隊伍中沒有法師 幸好隊伍中有一個弓箭手跟馬蓋先工具包,讓弓箭手也能發火球 產生 一個弓箭手 在弓箭上包一層布->淋上花生油->點火 射箭 火球飛出去了 **/