У меня есть фрагмент кода, в котором я начал размещать шаблон стратегии, скажем, следующим образом:
IStrategy
StrategyA : IStrategy
StrategyB : IStrategy
StrategyC : IStrategy
В интерфейсе есть только метод Calculate. После реализации оказалось, что все 3 конкретных типа имеют одинаковый код метода Calculate и два одинаково названных свойства, только с разными заданными значениями.
Поэтому, чтобы удалить дублирование, я сделал интерфейс абстрактным классом и переместил туда метод и свойства, просто установив базовые свойства с соответствующими значениями из конструкции конкретных типов.
Теперь я знаю, что паттерны — это не жесткие и быстрые правила, а всего лишь рекомендации, но я так далеко отклонился от рекомендаций, что не могу не думать, что есть еще один паттерн, на который мне следует обратить внимание?
Может ли кто-нибудь предложить какие-либо другие подходы, пожалуйста, оставьте меня, чтобы было легко добавить новые «Стратегии» в будущем. Может оказаться, что нам нужно изменить логику в некоторых из этих новых случаев, так как я могу структурировать это, чтобы у меня не было повторяющегося кода, но был гибкий дизайн, который позволяет мне изменять вещи в процессе?
Спасибо.