Шаблон стратегии со стратегией по умолчанию - PullRequest
0 голосов
/ 04 августа 2011

Я начинающий, когда дело доходит до шаблонов проектирования.Любые мысли о реализации шаблона стратегии / как это:

public class SomeClass {

    private Strategy strategy = new DefaultStrategy();

    public void provideCustomStrategy(Strategy strategy) {
        this.strategy = strategy;
    }
}

Это обеспечит слабую связь и все другие преимущества шаблона стратегии и DI.В то же время вы не заставляете пользователя предоставлять стратегию, и пользователь может принять решение предоставить собственную стратегию для угловых случаев и т. Д. Эту же цель можно достичь с помощью инжектора конструктора, если предоставить конструктору стратегиюпараметрическое.Я думаю, что эта реализация обеспечит максимальную гибкость во многих случаях.

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Недостатком этого подхода является постоянное соединение с классом DefaultStrategy.Если это принесет с собой какой-либо значительный багаж, вы можете пожалеть об этом в будущем.

Альтернативой может быть использование какого-либо позднего связывания.Таким образом, у вас нет стратегии по умолчанию, вместо этого у вас есть имя стратегии по умолчанию.Во время выполнения, при первом использовании, мы ищем имя загрузки соответствующего класса.Теперь у нас есть возможность контролировать стратегию, настраивая сопоставление класса имен.

Это одна возможность, включенная поиском ресурсов JEE в JNDI.

0 голосов
/ 22 февраля 2014

Я думаю, что наиболее важная вещь, которую стоит рассмотреть, будет ли эта реализация наилучшим образом соответствовать вашим потребностям?Я согласен с предоставлением сеттера (я бы изменил имя на setStrategy), но одним из недостатков является то, что клиенту нужно будет точно знать, какие стратегии доступны.Одним из способов предоставления этой информации клиенту является перечисление, в котором хранится каждая доступная стратегия.Затем клиент может «горячей замены» их по мере необходимости.

Вы можете посмотреть мой пример кода здесь: www.jasonsjavadocs.com / XHTML / DesignPatterns.html , в разделе «Стратегия».

...