У меня есть быстрый вопрос об организации конкретной проблемы ООП.Наилучшее решение проблемы организации ООП
Скажем, у меня есть класс ландшафта, полный плиток. Существует несколько производных класса Tile, а именно Door. Класс Door имеет метод open(), который открывает дверь, и close(), который закрывает дверь. Это имеет смысл до тех пор, пока оба этих метода не должны что-то проверять перед открытием и/или закрытием. Как я могу сделать проверку двери для объекта, не зная о его родительском?
Простым решением было бы проверить что-то в пути до вызова open(), но если бы была дверь другого типа, которая должна была быть проверена в другой форме, это создавало бы беспорядок на более высоком уровне.
Кажется, у этого был бы простой ответ, но также кажется, что я сталкиваюсь с этой проблемой чаще, чем нет.
Двери неактивны, обработчик открывает и закрывает их, и именно этот обработчик должен проверить, заблокирована ли дверь/заблокирована/уже в состоянии, в котором она хочет. Дверь знает только о себе, а не о других вещах в ее среде. – slashmais
@slashmais Итак, мое решение правильно? – lowq
Да, выглядит правильно - разные обработчики будут иметь разные возможности в том, как они приближаются к дверям; например: вы разблокируете и откройте дверь своего дома, полицейские выбьют его, автоматическое устройство сделает это и т. д. – slashmais