ООП: Соединение настройки состояния с показом этого? - PullRequest
0 голосов
/ 10 ноября 2011

Скажем, у меня есть класс с тремя состояниями: полноэкранный, оконный и свернутый. Состояние моего объекта хранится в виде перечислимого типа,

typedef enum {
    StateFullScreen,
    StateWindowed,
    StateMinimized
} State;

Если каждый раз, когда я меняю State, я вызываю два метода: setState: и showState:, я должен объединить эти действия в один? Например, переопределить обычный синтезированный метод setState: и заставить его в зависимости от состояния вызывать правильный метод showState:? Или я должен сделать это наоборот showState: call setState:?

Является ли одна из этих хороших практик программирования, когда дело доходит до объектно-ориентированного проектирования?

Ответы [ 2 ]

2 голосов
/ 10 ноября 2011

Рассматривали ли вы создание метода ChangeState (...)?Было бы достаточно просто создать рефакторинг первого прохода, который будет вызывать два других метода.Затем я бы провел дальнейшие рефакторинги, чтобы полностью очистить его.

1 голос
/ 10 ноября 2011

По моему мнению, было бы лучше сделать всю работу в setState, это то, что ожидал бы кто-то, использующий ваш класс.

У меня есть сеансовый класс, который имеет статусы подключения, отключения, онлайн и оффлайн,Если я вызываю setStatus, он также вызывает метод делегата и отключает сеанс, если новый статус равен отключению или отключен.

...