Qu'est-ce que le “Répartiteur” modèle de conception?
Qu'est-ce que le "répartiteur" et comment pourrais-je la mettre en œuvre dans le code?
J'ai un sac de propriétés génériques des objets et aimerait avoir de la récupération de déléguer à une méthode générique.
Actuellement, j'ai propriétés la recherche d'une clé spécifique dans le sac. Par exemple:
private Dictionary<String, Object> Foo { get; set; }
private const String WidgetKey = "WIDGETKEY";
public Widget? WidgetItem
{
get
{
return Foo.ContainsKey(WidgetKey) ? Foo[WidgetKey] as Widget: null;
}
set
{
if (Foo.ContainsKey(WidgetKey))
Foo[WidgetKey] = value;
else
Foo.Add(WidgetKey, value);
}
}
Il a été suggéré que cela pourrait être plus générique avec le "répartiteur", mais j'ai été incapable de trouver une bonne description ou d'un exemple.
Je suis à la recherche d'une plus générique façon de gérer les biens sac de stocker/récupérer.
OriginalL'auteur Ben Farmer | 2010-03-17
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas sûr de comprendre ta question correctement, mais...
... on dirait que vous êtes à la recherche d'informations sur "double-dispatching"?
Imaginez que vous avez trois classes:
Et deux méthodes pour faire quelque chose avec des objets de type B et C:
Le problème est que lorsque tout ce que vous avez est une variable de type statique...:
... vous ne pouvez pas appeler DoSomething(a), car au moment de la compilation seulement son type statique (Un) est connue, de sorte que le compilateur ne peut pas décider si elle doit appeler la méthode DoSomething(B obj) ou DoSomething(C obj).
C'est là que la double expédition. Certaines langues de soutien hors de la boîte, d'autres, comme C++, C# et Java ne le font pas. Mais vous pouvez la mettre en œuvre vous-même dans ces langues. Pour un exemple, voir:
http://en.wikipedia.org/wiki/Double_dispatch
Et:
http://en.wikipedia.org/wiki/Visitor_pattern
OriginalL'auteur stmax