Kri*_*irk 111 design-patterns bridge strategy-pattern
我尝试阅读有关dofactory,维基百科和许多网站的许多文章.我不知道桥梁模式和战略模式之间的差异.
我知道它们都将抽象与其实现分离,并且可以在运行时更改实现.
但我仍然不知道在哪种情况下我应该使用策略或在哪种情况下我应该使用桥接器.
Ken*_*art 62
语义.来自维基百科:
策略模式的UML类图与Bridge模式的图相同.但是,这两种设计模式的意图并不相同.虽然策略模式适用于行为,但Bridge模式适用于结构.
上下文和策略之间的耦合比Bridge模式中的抽象和实现之间的耦合更紧密.
据我了解,当你抽象出可以从外部源提供的行为时(例如,config可以指定加载一些插件程序集),你正在使用策略模式,并且当你使用时你正在使用桥接模式相同的结构使你的代码更整洁.实际的代码看起来非常相似 - 你只是因为略有不同的原因而应用这些模式.
小智 11
战略:
Intent是在运行时交换行为的能力
class Context {
     IStrategy strategyReference;
     void strategicBehaviour() {
        strategyReference.behave();
     }
}
桥
意图是完全将抽象与实现分离
interface IAbstraction {
    void behaviour1();
    .....
}
interface IImplementation {
     void behave1();
     void behave2();
     .....
}
class ConcreteAbstraction1 implements IAbstraction {
      IImplementation implmentReference;
      ConcreteAbstraction1() {
           implmentReference = new ImplementationA() // Some implementation
      }
      void behaviour1() {
            implmentReference.behave1();
      }
      .............
}
class ConcreteAbstraction2 implements IAbstraction {
      IImplementation implmentReference;
      ConcreteAbstraction1() {
           implmentReference = new ImplementationB() // Some Other implementation
      }
      void behaviour1() {
            implmentReference.behave2();
      }
      .............
}
桥 :(结构模式)
桥接模式解耦抽象和实现,并允许两者独立变化.
使用此模式时:
策略:(行为模式)
策略模式使您可以在运行时从一系列算法中切换多个算法.
使用策略模式时:
相关文章:
我也有相同的想法,但是最近我不得不使用网桥,并意识到网桥正在使用策略并向上下文中添加抽象,以便您以后可以进行更多更改而无需更改客户端。当使用不带抽象的策略时,设计不那么灵活,以后可能需要更改客户端。但是,当使用整个桥时,设计将变得更加灵活。在这里,您可以了解如何从“战略”过渡到“桥梁”如何提供更大的灵活性。我们还假设现在不仅可以在卡上使用“签证”和“主卡”,而且还可以在手机和芯片上使用“签证”和“主卡”。如果我们使用网桥,则添加该支持要容易得多。