web-dev-qa-db-fra.com

Référence principale - Synchronisation d'objets

J'ai un problème assez compliqué à résoudre. Dans l'application que je construis, il y a des objets, chaque objet peut avoir des paramètres, chacun a une ou plusieurs valeurs (restons simples pour l'instant et faisons comme si chaque paramètre n'avait qu'une seule valeur).

Désormais, les paramètres peuvent être regroupés en modèles, et lorsque vous créez/modifiez un objet, vous pouvez utiliser un modèle pour remplir rapidement l'objet, un peu comme Masters dans InDesign.

Voici un aperçu rapide pour le rendre un peu plus clair.

Model

Maintenant, le problème est de gérer les relations entre les modèles (ou maîtres) et leurs instances. En fait, il est possible qu'à un moment donné, l'utilisateur veuille remplacer une valeur de paramètre d'objet, ou vice versa, éditer le modèle.

J'envisage de rompre la relation template-children lorsqu'un paramètre d'objet est modifié et de demander une mise à jour lorsqu'un modèle qui a des enfants est modifié.

Est-ce la bonne façon de procéder? Si oui, comment dois-je informer l'utilisateur et quand? Si ce n'est pas la bonne façon de procéder, comment le feriez-vous?

1
Davide

Pour autant que je comprends votre question, il n'y a pas une seule réponse. Une bonne réponse pourrait cependant être basée sur la façon dont l'équipe de Balsamiq a implémenté les symboles. Pour relier cela à votre exemple:

Objet == Maquette
Modèle == Symbole
Paramètre == Objets
Valeurs == Propriétés des objets

Lorsque vous modifiez l'objet, les paramètres ajoutés dans le cadre d'un modèle auront une couleur d'arrière-plan différente, pour indiquer leur héritage. Lors de la modification des valeurs de ces paramètres, seules les valeurs modifiées ont une couleur de police différente.

Balsamiq a réussi deux autres choses intéressantes:

  • Les valeurs non modifiées conservent leur héritage même si d'autres valeurs du même paramètre ont perdu la leur après des modifications.
  • Il est facile d'annuler la modification et de ré-hériter des valeurs du modèle

Plusieurs modèles peuvent également être regroupés pour constituer un autre modèle, tout en restant des modèles indépendants à part entière. Les paramètres ont également généralement plusieurs valeurs.

Voici leur guide complet sur Travailler avec les symboles si vous voulez en savoir plus.

1
Joe Dreimann

Permettez-moi d'essayer d'approcher une solution, bien que ce ne soit pas à 100% lié à ce forum.

Comprendre avec une analogie

Supposons que vous essayez de créer une recette (produit final) et que les objets soient les "ingrédients", le paramètre de chaque objet peut être "mesuré" [en tenant pour acquis que chaque paramètre a une valeur pour l'instant], et quelle quantité de l'ingrédient à utiliser dans la recette est la "valeur" de la mesure de cet ingrédient. Résumer:

  • Objets == Ingrédients
  • Paramètre == Mesure de l'ingrédient [une des cuillères à soupe/grammes/litres/comptage]
  • Valeur == Quantité de mesure de l'ingrédient [une demi-cuillère à soupe de sel/un litre d'eau]

Je suppose qu'un modèle fait référence aux paramètres d'un objet unique .

UI

Les modèles prédéfinis peuvent être affichés en couleur verte, lorsqu'ils sont glissés/déposés pendant préparation la recette. Lorsque l'utilisateur choisit le modèle tel quel, alors tout au long de l'utilisation, vous pouvez conserver sa couleur verte. Lorsque l'utilisateur essaie de modifier un modèle existant, vous pouvez changer la couleur du composant et demander à l'utilisateur de l'enregistrer pour une réutilisation ultérieure.

La mise en oeuvre

Vos modèles pour chaque objet peuvent être implémentés sous la forme modèle de conception de méthode d'usine . Un bon exemple de cette implémentation peut être la classe BorderFactory en Java, où pour créer une bordure, divers paramètres comme le type/l'épaisseur/la couleur de l'ombre/la couleur BG, etc. sont fournis dans une méthode et une bordure en béton est fournie à travers ce modèle de conception.

0
A'n' User