2010-03-11 5 views
1

I a rencontré un problème de modélisation gratter la tête aujourd'hui:problème de modélisation - appareils en réseau avec des commandes

Nous modélisons un système de contrôle physique composé de dispositifs et NetworkDevices. Un exemple d'un périphérique est un téléviseur. Un exemple de NetworkDevice est un émetteur-récepteur IR avec une connexion Ethernet.

Comme vous pouvez le voir, pour être en mesure de contrôler la télévision sur Internet, nous devons connecter l'appareil au NETWORKDEVICE. Il y a une relation un à plusieurs entre appareil et NETWORKDEVICE à savoir la télévision n'a qu'un seul NETWORKDEVICE (l'émetteur-récepteur IR), mais l'émetteur-récepteur IR peut contrôler plusieurs périphériques (par exemple plusieurs téléviseurs).

Jusqu'à présent, pas de problème.

Le bit complexe est que chaque périphérique a une collection de Commandes. Le type de la commande (par exemple IrCommand, SerialCommand - N.B. pas actuellement modélisé) dépend du type de NETWORKDEVICE que le Dispositif est connecté.

Dans l'ancien système actuel du Device a une collection de générique Commandes (pas taper) où les champs sont « interprétées » en fonction du type NETWORKDEVICE.

Comment puis-je aller sur la modélisation cela dans POO tel que:

  • Vous ne pouvez ajouter jamais commande du type approprié, compte tenu de la NETWORKDEVICE le dispositif est attaché à?
  • Si je change les NETWORKDEVICE les changements de collecte des commandes au type approprié
  • Faites en sorte de l'API est simple/élégante/intuitive
+0

Veuillez clarifier, l'ensemble des commandes est-il toujours le même, mais l'implémentation est différente selon NetworkDevice? Ou existe-t-il des commandes disponibles uniquement sur certains NetworkDevices? –

+0

Non. L'ensemble des commandes est entièrement personnalisable - le périphérique réseau a besoin de commandes "compatibles". Par exemple, l'IR NetworkDevice aura besoin de codes IR pour les comamnds.Un NetworkDevice série peut avoir besoin de codes série valides – Schneider

Répondre

0

Vous pouvez utiliser le Abstract Factory Pattern. L'idée serait de donner à la Device une usine pour créer Commands. Le type de l'usine dépend du type de NetworkDevice. Donc, si un Device est connecté à un IR-Controller, il recevra un IRCommandFactory.

+0

Donc, si je me déconnecte de l'IR et que je me connecte à Serial l'usine va changer? Je ne suis pas encore sûr si l'entreprise nécessite que les commandes soient supprimées lorsque vous vous connectez à un nouveau NetworkDevice – Schneider

Questions connexes