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