it-swarm.com.de

Hauptreferenz - Objekte synchronisieren

Ich habe ein ziemlich kompliziertes Problem zu lösen. In der Anwendung, die ich erstelle, gibt es einige Objekte. Jedes Objekt kann einige Parameter haben. Jeder hat einen oder mehrere Werte (lassen Sie es uns zunächst einfach halten und so tun, als ob jeder Parameter nur einen Wert haben kann).

Jetzt können Parameter in Vorlagen gruppiert werden. Wenn Sie ein Objekt erstellen/bearbeiten, können Sie eine Vorlage verwenden, um das Objekt schnell zu füllen, ähnlich wie bei Masters in InDesign.

Hier ist eine kurze Beschreibung, um es ein bisschen klarer zu machen.

Model

Jetzt besteht das Problem darin, die Beziehungen zwischen Vorlagen (oder Mastern) und ihren Instanzen zu verwalten. Tatsächlich ist es möglich, dass der Benutzer zu einem bestimmten Zeitpunkt einen Objektparameterwert überschreiben oder umgekehrt die Vorlage bearbeiten möchte.

Ich denke darüber nach, die Beziehung untergeordnete Vorlagen-Kinder zu unterbrechen, wenn ein Objektparameter bearbeitet wird, und mit einer Aktualisierungsanforderung aufzufordern, wenn eine Vorlage mit untergeordneten Elementen bearbeitet wird.

Ist es der richtige Weg? Wenn ja, wie und wann soll ich den Benutzer benachrichtigen? Wenn dies nicht der richtige Weg ist, wie würden Sie es tun?

1
Davide

Soweit ich Ihre Frage verstehe, gibt es keine einzige Antwort. Eine gute Antwort könnte jedoch auf der Art und Weise basieren, wie das Team bei Balsamiq Symbole implementiert hat. Um dies mit Ihrem Beispiel in Verbindung zu bringen:

Objekt == Modell
Vorlage == Symbol
Parameter == Objekte
Werte == Eigenschaften der Objekte

Wenn Sie das Objekt bearbeiten, haben Parameter, die als Teil einer Vorlage hinzugefügt wurden, eine andere Hintergrundfarbe, um ihre Vererbung anzuzeigen. Beim Bearbeiten der Werte dieser Parameter haben nur die bearbeiteten Werte eine andere Schriftfarbe.

Balsamiq hat zwei andere nette Dinge erledigt:

  • Nicht bearbeitete Werte behalten ihre Vererbung bei, auch wenn andere Werte im selben Parameter nach Änderungen ihre verloren haben.
  • Es ist einfach, die Änderung zurückzusetzen und Werte erneut von der Vorlage zu erben

Es können auch mehrere Vorlagen gruppiert werden, um eine andere Vorlage zu bilden, während unabhängige Vorlagen für sich bleiben. Parameter haben im Allgemeinen auch mehrere Werte.

Hier ist ihre vollständige Anleitung zu Arbeiten mit Symbolen , wenn Sie mehr erfahren möchten.

1
Joe Dreimann

Lassen Sie mich versuchen, eine Lösung zu finden, obwohl dies nicht zu 100% mit diesem Forum zusammenhängt.

Mit einer Analogie verstehen

Angenommen, Sie versuchen, ein Rezept (Endprodukt) zu erstellen, und die Objekte sind die "Zutaten". Der Parameter für jedes Objekt kann "messen" sein [bei Ihrer Annahme, dass jeder Parameter vorerst einen Wert hat] und wie viel Die Zutat, die im Rezept verwendet werden soll, ist der "Wert" des Maßes dieser Zutat. Zusammenfassen:

  • Objekte == Zutaten
  • Parameter == Maß der Zutat [einer von EL/Gramm/Liter/Anzahl]
  • Wert == Menge des Ingrdient-Maßes [ein halber Esslöffel Salz/ein Liter Wasser]

Ich gehe davon aus, dass sich eine Vorlage auf Parameter eines einzelnen Objekts bezieht.

Benutzeroberfläche

Vordefinierte Vorlagen können beim Ziehen/Ablegen während Vorbereitung des Rezepts grün angezeigt werden. Wenn der Benutzer die Vorlage unverändert auswählt, können Sie die Farbe während der gesamten Verwendung grün halten. Wenn der Benutzer versucht, eine vorhandene Vorlage zu ändern, können Sie die Farbe der Komponente ändern und den Benutzer bitten, sie zur späteren Wiederverwendung zu speichern.

Implementierung

Ihre Vorlagen für jedes Objekt können als Entwurfsmuster für Factory-Methoden implementiert werden. Ein gutes Beispiel für diese Implementierung kann die Klasse BorderFactory in Java sein, in der zum Erstellen eines Rahmens verschiedene Parameter verwendet werden wie Typ/Dicke/Schattenfarbe/Hintergrundfarbe usw. werden in einer Methode bereitgestellt und ein konkreter Rand wird durch dieses Entwurfsmuster bereitgestellt.

0
A'n' User