В мире существуют, и довольно популярны, всевозможные настольные игры (то есть это те, в которых люди садятся за стол, выкладывают на игровое поле фишки, кидают кубик и так далее). Для пущей определенности возьмем скажем, игру Small World (кроме того, что она является типичным представителем, она еще и очень качественно сделана, не халтура).
Допустим мы хотим сделать компьютерный вариант этой игры (чтобы играть в том числе по сети - не всегда получается всем собраться за одним реальным столом). Соответственно возникает вопрос как архитектурно организовать логику игры? Ведь кроме всего прочего, к ней существуют аддоны. Чтобы не быть голословным:
Правила базовой игрыПример маленького расширения игрыПример переработанной версии игрыТо есть хочется во-первых как-то структурировать правила игры. То есть математически-алгоритмически описать (а не захардкодить все в дикое колличество ифов - запутаемся же!). Причем так, чтобы после выхода очередного аддона к игре, или переработанной версии, мы могли бы безболезненно это все добавить (не прочесывая ВЕСЬ уже написанный код) и по галке в настройках подключать/отключать это дело. Да, естественно в игре могут быть разные комбинации аддонов (например в игре может использоваться все три набора правил что я привел выше. одновременно) - это широко практикуется. То есть вариант с просто подгрузкой модуля реализующего правила которые выбрал пользователь в настройках - не катит. Нужно что-то более хитрое.
PS. Если это вдруг важно: у игра конечно разделится на серверную и клиентскую часть. На серверной крутится логика, архитектуру которой и предлагается мучить. На клиентской по сути только GUI.