Я создал ColorBlock
и ImageBlock
классы подклассов из абстрактных Block
класс. Block
реализует размер и положение и имеет абстрактный метод draw()
. ColorBlock
использует атрибут color
и рисует себя как квадрат цвета. ImageBlock
использует атрибут image
и рисует себя как квадрат с изображением внутри него.Раздражающая иерархия классов со смешанными атрибутами
Теперь я хочу сделать блоки подвижными, но я также хочу сохранить неподвижные блоки. В принципе, мне нужно было бы создать MovableColorBlock
и MovableImageBlock
, и они оба реализуют то же самое движущееся действие. Иерархия классов будет выглядеть так:
Block
|--ColorBlock
|----MovableColorBlock
|--ImageBlock
|----MovableImageBlock
И, как вы видите, я реализация скользящего действия дважды. Другим способом реализации этого было бы что-то вроде:
Block
|--ColorBlock
|--ImageBlock
|--MovableBlock (abstract)
|----MovableColorBlock
|----MovableImageBlock
Сейчас я реализует движущаяся только один раз, но Color
и Image
дважды. Есть ли простое решение, или мне нужен дубликат кода?
Не совсем то, что я ищу, но tbh это единственный здравый ответ: P –