Снова паттерны.
В прошлый раз мы рассмотрели, как с помощью фабричного метода можно вывести логику создания объекта в отдельный класс. Однако, в конце того поста всплыл вопрос - а что если нам надо создавать объекты разных семейств, объединяя их как-то? Если использовать одну и ту же фабрику, то система теряет гибкость, т.к. для добавления нового семейства необходимо переписывать уже существующий класс фабрики.Итак, возьмём пример из предыдущего поста - эльфийское воинство, состоящее из магов, воинов, лучников. Для эффективного создания этих юнитов мы используем "фабрику эльфов" с тремя фабричными методами для каждого типа юнита соответственно. Теперь мы хотим создать подобный механизм для, например, орков, но при этом создать унифицированный интерфейс доступа к ним для того, чтобы впоследствии иметь возможность добавления ещё игровых рас: людей, дроу, нежити и т.д.