Open alexey-malov opened 8 years ago
class Flyable :public IFlyBehavior
{
public:
void Fly() override
{
FlyMethod();
++m_flightCounter;
cout << "it's my " << GetFlightCount() << " flight" << endl;
}
virtual void FlyMethod()
{
cout << "I'm flying!!" << endl;
}
private:
size_t GetFlightCount()
{
return m_flightCounter;
}
size_t m_flightCounter = 0;
};
class FlyWithWings :public Flyable
{
public:
void FlyMethod() override
{
cout << m_flyMethodName.c_str() << endl;
}
private:
const string m_flyMethodName = "I'm flying with wings!!";
size_t flightCount = 0;
};
метод size_t GetFlightCount() должен быть константным.
класс Flyable используется только в одном месте и совершенно излишен. частично дублируется реализация FlyWithWings и Flyable
m_flyMethodName плохо соответствует своему предназначению
задание 1 - k=0,9 задание 2 - k=0,6
При использовании паттерна Стратегия методы не нужно делать виртуальными, т.к. изменение поведения класса обеспечивается не за счет наследования, а за счет композиции.