第九章 Bridge模式
//使用程式碼
public class Main(){
public static void main(String[] args){
Display d1 = new Display(new StringDisPlayImpl("Hello, China."));
Display d2 = new CountDisplay(new StringDisPlayImpl("Hello, World."));
CountDisplay d3 = new CountDisplay(new StringDisPlayImpl("Hello, Universe."));
d1.display();
d2.display();
d3.display();
d3.multiDisplay(5);
}
}
public class String Display{
/*
* 省略
*/
//注意看這裡 可以達到 功能層次結構和 實現層次結構分離,這裡可以。類似 介面卡模式。
//但是 介面卡模式 是結合功能上相似但是介面 不同的類。
public void open(){
impl.rawOpen();
}
//這裡類似 Template Method 模式使用了 類的 實現層次結構。
public final void display(){
open();
print();
close();
}
}
public class String DisplayImpl extends DisplayImpl{
/*
* 省略
*/
public void rawOpen(){
}
}
第十章 Strategy 模式
public interface Strategy(){
public abstract Hand nextHand();
public abstract void study(boolean win);
}
public class WinningStrategy implements Strategy{
/* 部分程式碼省略 */
private boolean won = false;
private Hand prevHand;
public Hand nextHand(){
if(!won){
prevHand = Hand.getHand(random.nextInt(3));
}
return prevHand;
}
public void study(boolean win){
won = win
}
}
public class Player{
/* 部分程式碼省略 */
public Hand nextHand(){
return strategy.nextHand();
}
}
和 Abstract Factory 相似思想是
Strategy 模式可以整體替換演算法。
Abstract Factory 可以整體替換工廠,零件 和 產品。