策略设计模式如何表示对象之间的组合

时间:2015-08-02 18:08:42

标签: design-patterns

我们知道战略设计模式属于行为设计模式,这种模式通过它们代表某种对象关系的事实来分类。 任何人都可以在策略中解释对象关系是如何维持的以及对象之间的关我们创建一个包含不同实现的上下文,客户端将在运行时选择其中一个,并且在另一个场景中也可以更改。 但是如何在这里保持对象关系以及这两个对象是什么。

1 个答案:

答案 0 :(得分:0)

策略模式只是表示使用对象的算法。这里的关系是调用策略的对象和代表策略的对象之间的关系。

interface FooSorter {
  List<Foo> sort(List<Foo> input);
}

class FooMergeSorter implements FooSorter { /* ... */ }
class FooHeapSorter implements FooSorter { /* ... */ }

/** The only thing you need to know about this class is that it needs Foo sorted. */
class YourContainerClass {
  FooSorter sortStrategy = new FooHeapSorter();

  void doSomething(List<Foo> listOfFoos) {
    // Sort according to the strategy.
    List<Foo> sortedList = sortStrategy.sort(listOfFoos);
    // ...
  }
}

从这个意义上说,容器类(上面是YourContainerClass)负责选择策略允许分配。它们的所有其他属性 - 实例控制,或它们如何被提供(通过您的上下文),或者它们如何在调用的类上分配 - 都超出了模式的范围。

有关策略模式以及它如何适用于其他设计模式的更多信息,请参阅this answer