Skip to content

Commit eac65bb

Browse files
committed
finish without test
1 parent 61c97ef commit eac65bb

6 files changed

Lines changed: 99 additions & 0 deletions

File tree

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package adapter;
2+
3+
4+
public class Banana extends BaseItem {
5+
public Banana() {
6+
super(15);
7+
}
8+
@Override
9+
public String useWord() {
10+
return "­»¿¼¼W¥[¤F" + mQuantity + "HP¡AOh yeah";
11+
}
12+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package adapter;
2+
3+
public abstract class BaseItem implements Item{
4+
public final static int NO_USE_QUANTITY = 0;
5+
protected int mQuantity = 0;
6+
public BaseItem(int quantity) {
7+
this.mQuantity = quantity;
8+
}
9+
10+
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package adapter;
2+
3+
import strategy.Monster;
4+
import strategy.Slime;
5+
import strategy.StrangeStone;
6+
import util.JavaLog;
7+
import decorate.Arrow;
8+
import decorate.Fire;
9+
import decorate.Ice;
10+
import decorate.Weapon;
11+
12+
public class Go {
13+
14+
public static void main(String[] args) {
15+
Weapon w1 = new Arrow();
16+
Weapon w2 = new ItemToWeaponAdapter(new Banana());
17+
Monster m1 = new Slime();
18+
Monster m2 = new StrangeStone();
19+
// 附魔前
20+
attack(w1, m1);
21+
attack(w2, m1);
22+
attack(w1, m2);
23+
attack(w2, m2);
24+
w1 = new Ice(w1);
25+
w2 = new Fire(w2);
26+
// 附魔後
27+
attack(w1, m1);
28+
attack(w2, m1);
29+
attack(w1, m2);
30+
attack(w2, m2);
31+
// 雙倍附魔
32+
w1 = new Fire(w1);
33+
w2 = new Fire(w2);
34+
attack(w1, m1);
35+
attack(w2, m1);
36+
attack(w1, m2);
37+
attack(w2, m2);
38+
}
39+
40+
private static void attack(Weapon w ,Monster m){
41+
JavaLog.d(w.getHurtVerb() + "對 " + m.getName() + "造成了" + w.makeDamage() + "傷害。");
42+
}
43+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package adapter;
2+
3+
public interface Item {
4+
public String useWord();
5+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package adapter;
2+
3+
import decorate.Weapon;
4+
5+
public class ItemToWeaponAdapter implements Weapon{
6+
7+
private Item mItem ;
8+
public ItemToWeaponAdapter(Item item) {
9+
this.mItem = item;
10+
}
11+
@Override
12+
public int makeDamage() {
13+
return 0;
14+
}
15+
@Override
16+
public String getHurtVerb() {
17+
return mItem.useWord();
18+
}
19+
20+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
##轉接器模式
2+
____
3+
轉接器模式:將一個類別的介面轉乘另一個介面以供其他類別或者客戶所使用。
4+
轉接器讓原本不相容的介面可以合作。
5+
6+
譬如原本只有武器可以攻擊對手,我也想用道具去攻擊對手,我就製作一個ItemToWeapon的adapter,把道具丟進這個Adapter讓他像武器一樣用。
7+
8+
一些常見的還有像把Map 轉成Json Object也很合適去製作一個Adapter。
9+
____

0 commit comments

Comments
 (0)