2019年5月13日 星期一

7天學會設計模式 CHAP10 轉接器模式 Adapter

7天學會設計模式
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();
 }
}

/**
===轉接器模式測試===
我們需要火球才能把樹上的蜂窩砸爛,糟糕的是隊伍中沒有法師
幸好隊伍中有一個弓箭手跟馬蓋先工具包,讓弓箭手也能發火球
產生 一個弓箭手 
在弓箭上包一層布->淋上花生油->點火
射箭
火球飛出去了
**/