Ich bin ein Neuling auf die Entwurfsmuster und hier ist meine FrageDesign-Muster Frage
wenn wir eine abstrakte Klasse mit wenigen Klassen, die es und jede dieser Klassen verfügt über verschiedene Attribute implementieren.
Jetzt habe ich eine andere (Manager-Klasse), die ein Array der abstrakten Klasse enthält und ich möchte eine Suchmethode darin einfügen ... wie kann ich das tun, ohne auf die konkreten Klassen zu werfen?
Ich habe 2 Ideen bekam:
Ertste: Hinzufügen einer zusätzlichen Ebenen der Schnittstellen, die mit dem Code geht nicht an Schnittstelle (dh nicht auf konkrete Klasse Gießen i auf eine Schnittstelle Gießen wird.) Implementation Rule ... aber so, wenn ich eine andere Klasse hinzufügen muss ich eine Schnittstelle dafür machen, und ich muss auch den Manager (Client) bearbeiten, was nicht sehr gut scheint.
Zweite Lösung: es etwas seltsam aussehen und braucht noch Verbesserungen, aber sein Hauptziel ist es, die Manager oder anderer Client arbeitet mit abstrakter Klasse zu machen, ohne irgend etwas zu wissen, wer sich oder ihre Attribute erweitert.
die solutin ist als folows: jedes neue Element wird hinzugefügt, eine Schnittstelle overide, dass es eine komplette discription seiner Felder zum Beispiel ein Auto Objekt eine Hash-Karte mit der Folowing
zurückkehren müssen generieren erzwingtFeld: {Feldtyp, fieldvalue}
Beispiel
- Modell: {Text, "Ford" }
- manifactureDate: {Date „12/1/89“}
und jedes Objekt wird auch eine Methode namens compareFields zu implementieren, die eine Hash-Karte wie diese nehmen und es auf seinem Gebiet zu vergleichen, und true zurück oder falsch.
jetzt auf diese Weise habe ich viele Probleme gelöst -für die GUI werde ich nur eine Rendering-Engine für dieses hashmap machen müssen, die jedes Element anzeigen kann, ohne zu wissen, was sein Typ. (Wiederum ist die gui ein anderer Client für die abstrakte Klasse)
-für die Suche i eine Hash-Karte bekommen, die die Felder enthalten die Benutzer im Suchformular und Schleife auf dem abstrakten Elemente eintritt, und rufen Sie die vergleichen fieldmethod
ich nicht immer noch, wie ich das komplexe Objekt (das ein anderes Objekt als seine Attribute) behandeln
ich weiß nicht, welche Art von Muster ist dies .. es nur eine Idee ist, dass ich darüber nachgedacht.
EDIT: Konkretes Beispiel
wenn ich ein abstraktes Element der Klasse mit einem Auto und Bus und Boot, das es implementiert ,, und jede dieser Klassen verfügt über verschiedene Attribute .... wie kann ein Manager zum Beispiel Traffic-Manager Suche nach einem bestimmten Artikel die abstrakte Klasse verwenden, ohne wirklich leid für die lange Frage zu Auto oder dem Bus ... Gießen
Huh? Ich bin verwirrt. Welche Sprache verwendest du? –
Egal welche Sprache er benutzt. Design-Patterns sind egal, dass sie in den meisten Sprachen implementiert werden können. – JonH
ich stimme mit jonH ,,, aber irgendwie kann ich Java verwenden –