Header

《图解设计模式》 第四部分 分开考虑

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

posted @ 2024-11-04 23:55  大俗XD  阅读(1)  评论(0编辑  收藏  举报

Footer