J'ai quelques points (arrêts de voiture) à représenter sur un graphique temporel. Ces points sont reliés entre eux par des lignes. Les points + lignes représentent un graphique (c'est-à-dire un horaire de voiture). Le graphique peut être modifié en déplaçant CarStops dans le temps avec la souris.Le lien entre BO et l'interface graphique est rompu. Que faire?
J'ai décidé d'implémenter des points et des lignes comme contrôles (je pense qu'il sera plus facile de les déplacer sur les panneaux).
J'ai deux couches d'objet métier - Real BO (CarStop
) et GUI Control (CarStopControl
). J'associe ensuite un CarStop
(Time, Station) à CarStopControl
(X, Y) - CarStopControl s'abonne aux événements CarStop.Moved. Finalement, un objet Car
a quelques CarStop
s.
- Comment déplacer des contrôles? Simplement: Détecter un mouvement de la souris sur le panneau et calculer
dX
, transformerdX
endTime
Car.Move(dTime)
- déplace tous les CarStops. LorsqueCarStop
a été déplacé, envoyez l'événement àCarStopControl
, et ce dernier change ses coordonnées. De cette façon,CarStopControl
semble suivre les mouvements de la souris.
C'est tout.
Le problème apparaît lorsque dans Car.Move
il y avait un besoin de recréer la CarStop
collection - les liens entre CarStopControl
et CarStop
évidemment est devenu obsolète, voiture BO Car
et CarStop
ne sait même se soucient pas, ni sur CarStopControl
s.
La situation similaire est lorsque Car
lui-même pourrait être remplacé par un new Car
.
Est-ce que quelqu'un avait des situations similaires? Y at-il une «solution de contournement» de + - résoudre rapidement ce problème?
Merci.
Disons plutôt que de myCarStop dans CarStopControl j'ai présenté myCarStopProxy qui implémente ICarStop. Maintenant, je recteate le CarStop. Comment le CarStopProxy est-il au courant? Où dois-je créer le proxy: dans la couche BO ou GUI? – serhio
J'ai des ID dans mes voitures-carStops de la base de données. Maintenant, Mediator, comme carStopProxy, où il devrait être créé. Maintenant, est-il informé d'une réinitialisation carStop ... – serhio
@serhio J'ai ajouté des exemples de code. –