Шаблон состояния: почему контекстный класс не реализует и не наследует абстрактный интерфейс / класс State? - PullRequest
3 голосов
/ 28 мая 2010

Я читаю о Государственном паттерне. Я только начал, поэтому, конечно, я начинаю с прочтения всей статьи Википедии .

Я заметил, что оба примера в статье имеют некоторый базовый абстрактный класс или интерфейс Java для общих методов / функций State. Тогда есть некоторые состояния, которые наследуются от базы и реализуют эти методы / функции по-разному. Тогда есть класс Context, который имеет закрытый член типа State и который в любой момент может быть равен экземпляру одной из реализаций. Этот контекстный класс также реализует те же методы и передает их в текущий экземпляр состояния, а затем имеет дополнительный метод для изменения состояния (или, как я понимаю, в зависимости от конструкции изменение состояния может быть реакцией на один из реализованных методов) .

Почему этот контекстный класс специально не «расширяет» или «не реализует» базовый базовый класс / интерфейс State?

1 Ответ

5 голосов
/ 28 мая 2010

Поскольку состояние - это деталь реализации, а не часть его интерфейса. То есть контекст не является состоянием, он только имеет состояние. Пользователям контекста даже не нужно знать о его состоянии.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...