Это продолжение этого вопроса. Контекст тот же, так что беглый просмотр может быть полезен. Я обдумывал это в течение нескольких дней и ничего не добился, поэтому я сдаюсь и иду сюда.
Мне интересно, какие шаблоны проектирования вступают в игру при создании системы, подобной той, которую я описал там. Допустим, у меня есть боевой алгоритм, который может иметь любое количество бойцов с каждой стороны. Сначала выясняем, кто на кого нападает, а потом казним.
Сложность заключается в том, что можно добавить множество дополнительных вариантов поведения, и они могут быть несколько произвольными. Думайте о них как о «пассивных навыках». Также может быть такое поведение, как получение прироста характеристик при попадании в цель, но только в некоторых типах боя.
Мой предыдущий вопрос показывает, как декоратор потерпел неудачу. В ответе был предложен шаблон «Стратегия», но я не горю желанием писать дюжину различных типов стратегий, а затем несколько конкретных классов для каждого из них. Но даже тогда мне все равно пришлось бы нарушать принцип «Открыто-Закрыто», если бы мне понадобилось совершенно новое поведение, совершенно не похожее ни на что, что у меня уже было. Также будут случаи, когда мне нужно объединить несколько стратегий одновременно, что может привести к декорированным стратегиям или составным стратегиям. Например, когда вы получаете урон, вы можете 1. иметь способность, которая сокращает урон вдвое, 2. иметь предмет, который еще больше снижает урон, 3. возвращать часть урона атакующему и 4. получать очки характеристик. .
Что же здесь делать опытному архитектору? Эти системы реализованы во многих играх, поэтому мне любопытно, какой шаблон или комбинация шаблонов хорошо работают здесь.
Я не хочу публиковать огромную стену кода, поэтому, если есть какая-то конкретная часть моей системы, которую вы хотели бы увидеть, просто спросите в комментарии.