пятница, 28 сентября 2012 г.

Абстрактная фабрика

Снова паттерны.

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

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

среда, 26 сентября 2012 г.

Фабричный метод (Фабрика)

Курим паттерны вместе. Для начала что-нибудь несложное. К примеру, Фабричный метод или Фабрика (Factory).

Итак, допустим, пишем мы игру. И в ней у нас есть эльфы. Обычные такие эльфы, среди которых есть лучники, маги, пехотинцы. И есть список юнитов, среди которых вперемешку лежат все три разновидности этих самых юнитов.

Для начала создадим базовый класс Unit. Это будет абстрактный класс, в котором будет содержаться общий для всех метод Attack();

среда, 11 января 2012 г.

Искра первая

Искры из глаз летят тогда, когда в лоб что-то попадает. В нашей суматошной жизни в лоб чаще всего прилетает не вражеская пуля или обалдевшая птица, а древко грабель, которые мы по какой-то причине не заметили под ногами.
И вот когда мы снова наступаем на одни и те же грабли, получаем по голове черенком и считаем серебристые искорки, вот тогда и появляется желание сделать так, чтобы другие люди по крайней мере заметили наши грабли и если и наступали в них, то наступали сознательно.