5. class Footman
{
public:
Footman ();
virtual ~Footman() {}
};
class Archer
{
public:
Archer ();
virtual ~Archer() {}
};
class HumanFootman: public Footman
{
public:
…
};
class HumanArcher: public Archer
{
public:
…
};
class OrcFootman: public Footman
{
public:
…
};
class OrcArcher: public Archer
{
public:
…
};
Конкретные
классы боевых единиц
Абстрактные классы
боевых единиц
12. Стратегия
Паттерн поведения
Назначение:
Существуют системы, поведение которых может
определяться согласно одному алгоритму из некоторого
семейства. Все алгоритмы этого семейства являются
родственными: предназначены для решения общих
задач, имеют одинаковый интерфейс для использования
и отличаются только реализацией.
17. Строитель
Порождающий паттерн
Назначение:
Паттерн Строитель отделяет алгоритм поэтапного
конструирования сложного продукта (объекта) от
его внешнего представления так, что с помощью
одного и того же алгоритма можно получать разные
представления этого продукта.
18. Задача
А запили ты нам систему, по
которой из ресурсов будут
собираться игровые объекты.
28. class Unit
{
public:
virtual int GetStrength() = 0;
virtual int GetSpeed() = 0;
virtual void AddUnit(Unit* unit)
{
assert( false);
};
};
class Archer: public Unit
{
public:
virtual int GetStrength()
{
return 3;
};
virtual int GetSpeed()
{
return 1;
};
};
class Footman: public Unit
{
public:
int GetStrength()
{
return 2;
};
int GetSpeed()
{
return 2;
};
};
class Horseman: public Unit
{
public:
int GetStrength()
{
return 1;
};
int GetSpeed()
{
return 3;
};
};
29. class Legion: public Unit
{
public:
int GetStrength()
{
…
};
int GetSpeed()
{
…
};
void AddUnit(Unit* unit)
{
m_units.push_back( unit);
};
private:
std::vector<Unit*> m_units;
};
А сюда я вставлю свои cбалансированные
формулы.
32. Использование протестированного кода вновь и вновь
Разработка с точки зрения абстракции а не реализации
Разделение целостной системы на слои (подсистемы)
Выводы
Стремление инкапсулировать все, что может быть подвержено
инкапсуляции
Основная идея
Побудить желание к написанию структурированного,
грамотного и многоразово-используемого кода