第九章 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 可以整体替换工厂,零件 和 产品。