J'ai créé les classes ColorBlock
et ImageBlock
sous-classe à partir de la classe Block
abstraite. Block
implémente la taille et la position et a une méthode abstraite draw()
. ColorBlock
implémente l'attribut color
et se dessine comme un carré de couleur. ImageBlock
implémente l'attribut image
et se dessine comme un carré avec une image à l'intérieur.Hiérarchie de classe gênante avec attributs mixtes
Maintenant, je veux rendre les blocs mobiles, mais je veux aussi garder les blocs inamovibles. Fondamentalement, je devrais créer MovableColorBlock
et MovableImageBlock
, et ils implémentent tous les deux la même action de déplacement. La hiérarchie de classe serait comme ceci:
Block
|--ColorBlock
|----MovableColorBlock
|--ImageBlock
|----MovableImageBlock
Et comme vous le voyez, j'exécution de l'action en mouvement deux fois. Une autre façon de mettre en œuvre ce serait quelque chose comme:
Block
|--ColorBlock
|--ImageBlock
|--MovableBlock (abstract)
|----MovableColorBlock
|----MovableImageBlock
Maintenant, je suis mise en œuvre du mouvement qu'une seule fois, mais deux fois Color
et Image
. Existe-t-il une solution facile ou aurai-je besoin de code en double?
Pas vraiment ce que je cherche, mais c'est la seule réponse saine jusqu'à présent: P –