Здравствуйте
Осваиваю книгу Рефакторинг Мартина Фулера.
В одном месте заменяет switch. вместо наследования использует шаблон "Состояние":
"... Такой прием позволяет заменить оператор switch полиморфизмом. К сожалению, у этого решения есть маленький недостаток – оно не работает. Фильм за время своего существования может изменить тип,
объект же, пока он жив, изменить свой класс не может. Однако выход есть – паттерн «Состояние» (State pattern [Gang of Four])" стр52.
Может мне кто то объяснить, зачем?
Почему надо изменять свой класс?
public abstract class Movie
{
public abstract double GetCharge(int daysRented);
}
public class CHILDRENSMovie : Movie
{
public override double GetCharge(int daysRented)
{
throw new NotImplementedException();
}
}
public class REGULARMovie : Movie
{
public override double GetCharge(int daysRented)
{
throw new NotImplementedException();
}
}
Почему вышеуказанная иерархия "не подходит"?
Спасибо