2009-04-28 4 views
1

Ich benutze libsigC++, um eine Anwendung zu verkabeln, und ist unsicher, was den einfacheren Weg angeht.Best Practice der Signal-Slot-Architektur

Es gibt eine vorher existierende Objekthierarchie, die die Datenschicht verwaltet, und das Top-Level-Objekt stellt alle Funktionen. Alles gut bis jetzt.

Dazu addiere ich eine GUI-Objekthierarchie, und in dem Anwendungsobjekt ich sie zusammen mit Signalverbindungen am Einhaken. Um eine Verbindung herzustellen, brauche ich Zeiger auf Sender und Empfänger.

Nun kann ich in einem Kind-Widget, weit unten in dem Baumhaken, direkt, was somit Zeiger übergaben oben und unten den Baum werden?

Oder gehe ich durch die mühsamen Prozesse in der Kette bei jedem Schritt in Signalen und Slots Einhaken?

Auf der einen Seite, vorbei Zeiger die Trennung brechen, dass das sig-Slot-Modell Sie kauft. Auf der anderen Seite scheint die Schaffung von Verbindungen bei jedem Schritt nicht mit der angeblichen "Event-Telepathie" zu reimen, die die Sig-Slots bieten sollen.

Welche Person würde bei diesem Modell den Standardansatz berücksichtigen?

Antwort

1

Persönlich sehe ich kein Problem durch "überspringen" Schichten mit dem Signal/Slots-Mechanismus. Ich sehe es lieber so: Eine Komponente sendet Signale in die Wildnis, und wer sich für diese Signale interessiert, kann ihnen zuhören.

Ein paar Tipps: vermeiden Signale zu senden, die zu allgemein sind, und verlassen Sie sich nicht auf die Reihenfolge der Ausführung der Schlitze (wenn viele Slots für ein gegebenes Signal bezeichnet werden).