Я портирую 2D-платформер, и мне нужен хороший способ получить некоторую расширяемость моих тайлов уровня. Я не уверен, что Decorator здесь прав, но больше ничего не приходит на ум. Может быть, мне нужно что-то уникальное.
В любом случае, скажем, у меня есть базовый тайл, в котором есть такие вещи, как его изображение, и может ли игрок пройти через него (фон или передний план). Теперь я хочу добавить к ним свойства, например, заставить некоторые плитки выступать в роли лестниц, или сделать несколько ран или убить игрока при контакте. Может быть, некоторые могут исчезнуть. Некоторые свойства могут быть объединены.
Это звучит как декоратор, но мне действительно не нравится, как для этого требуется, чтобы мой базовый класс реализовывал фиктивные версии всего, например isLadder()
, isLethal()
и т. Д. Есть ли лучший способ? Я не собираюсь быть парнем, который меняет мой дизайн, просто чтобы он выглядел как нечто из книги GoF.
Извините, если об этом спрашивали миллион раз, я не совсем нашел его в смежных вопросах.