《图解设计模式》 第四部分 分开考虑
第九章 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 可以整体替换工厂,零件 和 产品。