Выбор шаблона "Состояние" вместо наследования
От: zfima  
Дата: 04.11.13 13:49
Оценка:
Здравствуйте

Осваиваю книгу Рефакторинг Мартина Фулера.

В одном месте заменяет 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();
        }
    }


Почему вышеуказанная иерархия "не подходит"?


Спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.