设计模式 - 战略与桥梁(设计重叠)

Ank*_*oel 5 java oop design-patterns

今天,我的困境来自于试图理解为什么战略和桥梁模式的实施方式存在重叠.

这是Bridge Pattern(从抽象中抽象出一个实现)

// Shapes object structure will not be concerned how they draw themselves
public abstract class Shape {
   protected DrawAPI drawAPI;

   protected Shape(DrawAPI drawAPI){
     this.drawAPI = drawAPI;
   }
   // This could also be put in the subcla
   public void draw() {
     drawAPI.drawCircle(radius,x,y);
   }
}
Run Code Online (Sandbox Code Playgroud)

现在是策略模式 - 可以在运行时更改类行为或其算法.计算器会将其操作委派给策略

public class Calculator{
  private Strategy strategy;

  public Calculator(Strategy strategy){
    this.strategy = strategy;
  }

  public int executeStrategy(int num1, int num2){
     return strategy.doOperation(num1, num2);
  }
}
Run Code Online (Sandbox Code Playgroud)

这两种模式都涉及丢弃封装功能的策略对象.请帮助解决桥梁模式(结构)和战略模式(行为)之间的明显差异.我遇到的另一个困惑是他们处于不同的知识范围内.

Sti*_*Cat 1

策略模式表示您可以稍后更改核心算法。例如,当您编写电子商务应用程序并且您拥有 B2B 和 B2C 客户时,他们具有不同的付款和订购方式。然后您将使用策略模式作为结帐策略。因此,基本操作是相同的,但是两个用户使用不同的方式(策略)来完成该操作。相比之下,桥模式表示您在两个模块之间构建了一座桥,并且可以独立更改这些模块。这是针对抽象和信息隐藏。