【问题标题】:How strategy design pattern represents combination between objects策略设计模式如何表示对象之间的组合
【发布时间】:2015-08-02 18:08:41
【问题描述】:

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

【问题讨论】:

    标签: design-patterns


    【解决方案1】:

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

    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 了解更多关于策略模式以及它如何融入其他设计模式的信息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-30
      • 2013-11-06
      • 1970-01-01
      • 2014-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多