天天看點

23種設計模式橋連模式Bridge

重點内容

1.什麼是橋梁模式

2.哪些地方用到橋梁模式

3.橋梁模式的優點

橋梁模式:(bridge)又稱橋接模式,屬于結構型。主要考慮對象結構,對象之間的依賴關系等

通用類圖:

23種設計模式橋連模式Bridge

哪些地方用到橋梁模式?

由于實際的需要,某個類具有兩個或兩個以上的次元變化,如果隻是用繼承将無法實作這種需要,或者使得設計變得相當臃腫。這樣可以考慮到橋接模式

Eg:通過cpu 和品牌可以判定電腦的優劣。那麼三者之間的關系可以使用橋接模式進行描述(這樣說有些牽強)

下面貼上源碼:

public class Client {

  /**
   * @param args
   */
  public static void main(String[] args) {
    // intel
    IcpuAvaliable iAvaliable = new IntelCpuIml();
    AbComputerBrank abComputerBrank = new MacComputer(iAvaliable);
    abComputerBrank.checkComputer();

    iAvaliable = new AmdCpuIml();
    abComputerBrank = new MacComputer(iAvaliable);
    abComputerBrank.checkComputer();

  }

}      

實作:

public interface IcpuAvaliable {

  /**
   * cpu 能力
   */
  public String cpuAvaliable();
}      
public class IntelCpuIml implements IcpuAvaliable {

  @Override
  public String cpuAvaliable() {
    
    return "intel 性能比較高";
  }

}      
public class AmdCpuIml implements IcpuAvaliable {

  @Override
  public String cpuAvaliable() {
    return "Amd 性能一般";
  }

}      
/**
 * 抽象部分
 * @author weichyang
 *
 */
public abstract class AbComputerBrank {

  public IcpuAvaliable icpuAvaliable;

  public AbComputerBrank(IcpuAvaliable icpuAvaliable) {
    this.icpuAvaliable = icpuAvaliable;
  }

  /**
   * 品牌次元
   */
  public abstract void checkComputer();
}      
public class LenoveComputer extends AbComputerBrank {

  public LenoveComputer(IcpuAvaliable icpuAvaliable) {
    super(icpuAvaliable);
  }

  @Override
  public void checkComputer() {
    System.out.println("華碩筆記本CPU性能" + super.icpuAvaliable.cpuAvaliable());
  }

}      
public class MacComputer extends AbComputerBrank {

  public MacComputer(IcpuAvaliable icpuAvaliable) {
    super(icpuAvaliable);
  }

  @Override
  public void checkComputer() {
    System.out.println("Mac電腦的cpu" + super.icpuAvaliable.cpuAvaliable());
  }

}