Registry Pattern

N

NecroniX

Gast
Hallo zusammen,

ich kenn das Registry Pattern aus PHP, aber wie setzt man das in Java um ?

Wäre gut wenn mir da einer helfen könnte !

Schon mal Danke.

Mfg
NecroniX
 

ice-breaker

Top Contributor
Design Patterns sind unabhängig von Programmiersprachen, wenn du ein bestimmtes Problem bei der Implementierung hast, solltest du das genauer ansprechen.
Eventuell wäre auch "Inversion of Control" bzw. "Dependency Injection" viel eher das, was du suchst.
 
N

NecroniX

Gast
Mein Problem liegt dadrin, das ich nicht weiß wie die Variablen bzw Objekte in der Registry gespeichert werden. Bei PHP funzt das ja mit nem simplen Array, was meines Wissen bei Java so nicht möglich ist.
 

NecroniX

Mitglied
Ich hab jetzt versucht das registry pattern mit dem Map Objekt zu verwirklichen. Komm aber einfach nicht weiter.
Z.B. hier:

Java:
import javax.script.*;
import Core.Event.*;


public class MainClass {
    public void main(String args[]) {
        SimpleBindings registry = new SimpleBindings();
        registry.put("EventHandler",new EventHandler());
        EventHandler eventHandler = registry.get("EventHandler");
    }
}

In Zeile 9 passen nun die Typen nicht zueinander. Was kann man dagegen tun ?
Schließlich sollen ja in dieser "Registry" alle möglichen Typen gespeichert werden.

Ich hoffe ihr könnt mir ein weiteres mal.

Mfg
NecroniX
 

Jay_030

Aktives Mitglied
Du musst explizit casten. PHP bindet da dynamisch den Typ, Java nicht.

Java:
EventHandler eventHandler = (EventHandler) registry.get("EventHandler");

Edit: Des Weiteren ist das nicht natürlich, dass du SimpleBindings verwendest. Das ist für Skriptsprachen in Java gedacht. Wenn du einfach nur Objekte ablegen möchtest, um diese später über einen String wieder zu bekommen, reicht eine Map, wie oben bereits erwähnt, völlig aus.
 
Zuletzt bearbeitet:

NecroniX

Mitglied
@Jay
Sorry das ich dir erst jetzt danken kann. Hat mir zuerst sehr geholfen, aber bei meiner GUI mit Swing bin ich wieder am gleichen Problem stecken geblieben.

Beim Casten der Objekte gehen ja die Inhalt der ensprechenden Variablen verloren. Wie kann ich die Objekte nun so ablegen das ihre, Inhalte erhalten bleiben und ich sie dann unter nem Key in nem Table oder einer List ablegen kann. Ich dachte hier schon an Serialisierung, aber ich habe imo nur ne Serialiserung in ne XML gesehn und das wäre auf jedenfall zu Übertrieben.

Bei meinem konkreten Fall will ich mit Swing ne GUI haben, wo ich auch noch nach dem "Adden" zu dem enstprechenden Container drauf zugreifen und sie z.B. deaktivieren etc. .

Hoffe ihr könnt mir hier bei helfen.

Mfg
NecroniX
 
M

MrWizenly

Gast
Hallo,

das Problem ist, dass Du hier keinen so "einfachen" Weg finden wirst wie in PHP. Wie schon Jay sagte wird in Java der Datentyp statisch festgelegt. Um Dir das casten zu ersparen, vor allem aber um eine erhöhte Typsicherheit zu erreichen, kannst Du auf Generics zurückgreifen.
Ice-breaker zeigte zwar schon wie man Generics verwenden kann, unglücklicherweise wurde aber auf den Typ Object für die abgelegten Werte zurückgegriffen. Hier kann entsprechend ein beliebiges Objekt abgelegt werden.

Besser ist es einen spezifischen Typ zu verwenden. Am saubersten ist es, wenn Du ein Interface (oder eine abstrakte Basisklasse) erzeugst, welche alle Eigenschaften deklariert, die ein Registry Eintrag haben soll. Ein einfaches Beispiel könnte darin bestehen, dass ein solcher Eintrag eine String-Zeichenkette speichert und aktiviert/deaktiviert sein kann:

Java:
public interface IRegistryEntry {
  // Gibt den String-Wert zurück
  public String getValue();

  // Gibt zurück ob der Eintrag aktiviert ist oder nicht
  public boolean isActive();
}

public class RegistryEntry implements IRegistryEntry {
 
  private final String value;
  private boolean isActivated;

  // Konstruktor
  public RegistryEntry(final String value) {
    // Ruft den anderen Konstruktor auf und setzt den Eintrag als aktiviert
    this(value, true);
  }

  // Konstruktor
  public RegistryEntry(final String value, 
                             final boolean activated) {
     this.value = value;
     this.isActivated = activated;
  }

  public String getValue() {
    return this.value;
  }

  public boolean isActivated() {
    return this.isActivated;
  }

  public void setActivated(final boolean activated) {
    this.isActivated = activated;
  }
}

Eine Map<String, IRegistryEntry> könntest Du jetzt mit Exemplaren der Klasse füllen, die Abrufen und z.B. den Status (aktiviert) setzen. Die Änderung wirkt sich auf die Variablen aus und wird auch korrekt gespeichert. Die Objekte liegen aber nur im Hauptspeicher und nur für die Laufzeit des Programms vor.

Ein anderes Thema wäre nun die Persistenz. Hierunter fällt das festschreiben der Registry, so dass diese Werte auch nach dem beenden des Programms zur Verfügung stehen (z.B. in einer Datei oder DB). Eine Möglichkeit die Registry festzuschreiben bestünde nun darin, dass Du diese serialisierst (und entsprechend beim Laden wieder deserialisierst). Das ist aber ein anderes Problem, dass von dem Pattern nicht berücksichtigt wird.

Zudem möchte ich explizit darauf hinweisen, dass dieses Pattern nicht unbedingt nach einer all zu sinnvollen Idee klingt. So wie es sich ließt kann es leicht und vermeintlich unbeabsichtigt dazu verleiten verstärkt mit globalen Variablen zu arbeiten. Die Verpackung in ein Objekt (das als Singleton vorliegt und leicht zugänglich ist) macht die Sache nicht wirklich besser. Ein sauberer Entwurf und ein ausreichendes Verständnis der OOP sollten in vielen Fällen die Verwendung einer Registry überflüssig machen, denke ich.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Variablen zur Laufzeit global speichern (Registry Pattern?) Allgemeine Java-Themen 6
R -jar der Windows-Registry hinzufügen Allgemeine Java-Themen 1
M Registry Autostart Eintrag mit Java erstellen (über Windows cmd) Allgemeine Java-Themen 7
M Registry Autostart Eintrag ertstellen mit Java (Runtime.getRuntime().exec()) Allgemeine Java-Themen 0
F Registry Ordner durchlaufen Allgemeine Java-Themen 1
B Installer, der in die Win-Registry schreibt Allgemeine Java-Themen 10
M Wie mit Jacob die Registry auslesen? Allgemeine Java-Themen 0
E CMD Registry Key für Windows 7? Allgemeine Java-Themen 9
Dit_ Registry, Preferences | Name des Knotens ändern. Allgemeine Java-Themen 2
M Autostart: Registry oder Link? Allgemeine Java-Themen 6
S Problem mit Registry Allgemeine Java-Themen 3
C Registry auslesen mit Java Allgemeine Java-Themen 13
P windows registry lesen Allgemeine Java-Themen 3
conan2 Windows-Registry lesen und schreiben Allgemeine Java-Themen 8
K Registry-Zugriff auch einfacher? (ORACLE_HOME auslesen) Allgemeine Java-Themen 3
A Windows Registry Zugriff Allgemeine Java-Themen 4
M Registry mit jRegistryKey auslesen Allgemeine Java-Themen 7
M swing und windows registry Allgemeine Java-Themen 11
C REG_BINARY Type in Windows Registry ausgeben ? Allgemeine Java-Themen 4
C Registry schreiben und lesen unter Win XP ? Allgemeine Java-Themen 2
S Zugriff auf Windows-Registry Allgemeine Java-Themen 8
mihe7 equals und instanceOf pattern matching Allgemeine Java-Themen 9
L Pattern Eventhandler Allgemeine Java-Themen 5
EinNickname9 Best Practice Singleton und Singleton mit Instanz zu anderer Klasse -Pattern Allgemeine Java-Themen 30
Z MVC Pattern - sinnvolle Integration Allgemeine Java-Themen 6
J Meinung zum verwendeten Design Pattern Allgemeine Java-Themen 4
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
Meeresgott Best Practice "Spezifisches" Factory Pattern ? Allgemeine Java-Themen 1
H Strategy Pattern - changeColor() Methode - input rgd oder hex einlesen Allgemeine Java-Themen 1
M Vaadin MVP Pattern Allgemeine Java-Themen 1
N Java MVC Pattern richtig anwenden Allgemeine Java-Themen 24
M OOP Design Pattern - "extends Observable implements Observer" Allgemeine Java-Themen 0
K Factory Pattern: Mit Generics umgehen Allgemeine Java-Themen 6
perlenfischer1984 Welches Design Pattern ist geegneit. Allgemeine Java-Themen 7
perlenfischer1984 Hilfe bei Design (Pattern) Allgemeine Java-Themen 5
J Compilerfehler bis in java.util.regex.Pattern... Allgemeine Java-Themen 2
B MVC-Pattern größeres Beispiel Allgemeine Java-Themen 16
GreenTeaYT Verstehe nicht ganz das Observer Pattern in einer Arrayliste? Allgemeine Java-Themen 3
L Erste Schritte Java Date Format Pattern bestimmten Allgemeine Java-Themen 2
D Pattern mit Pattern vergleichen Allgemeine Java-Themen 3
D OOP Design Pattern für GUI - Datenbank Anwendung Allgemeine Java-Themen 1
S Hilfe bei geeignetem Pattern (Decorierer) Allgemeine Java-Themen 2
F Welches Design Pattern? Allgemeine Java-Themen 3
J Pattern aus String entfernen Allgemeine Java-Themen 2
S Pattern.Match Suche: For Schleife einbinden und in Liste schreiben Allgemeine Java-Themen 3
Rudolf State Pattern als Enum? Allgemeine Java-Themen 10
M massenhaft verschiedene Date-Pattern Allgemeine Java-Themen 3
Guybrush Threepwood Pattern gesucht: Punkt ohne Leerzeichen dahinter Allgemeine Java-Themen 3
turmaline OOP Decorater Pattern für Varifikationsverhalten Allgemeine Java-Themen 13
T HTML Tag Position mittels Pattern ermitteln Allgemeine Java-Themen 7
X Datentypen Prozentualer Abgleich zwischen 2 Strings (Pattern?) Allgemeine Java-Themen 3
H Pattern.compile Syntax Allgemeine Java-Themen 15
B RegEx: (Um-)formulieren eines Pattern zur Identifizierung komplexer URLs Allgemeine Java-Themen 7
D [Drag&Drop] Design-Pattern-Frage Allgemeine Java-Themen 4
T Pattern für Benutzer-Gruppen, RMI Allgemeine Java-Themen 5
E Super erzwingen, konzept/pattern gesucht. Allgemeine Java-Themen 8
H Problem mit der Klasse Pattern - Regulärer Ausdruck Allgemeine Java-Themen 2
Eldorado Meinung zu einem abgewandelten MVC-Pattern Allgemeine Java-Themen 2
R Matcher - Pattern mit belibigem Anfang Allgemeine Java-Themen 2
H Bestimmten String mit Pattern und Matcher herauslesen => kein erfolg Allgemeine Java-Themen 9
I Pattern zum Erweitern existierender Objekte Allgemeine Java-Themen 4
I Template Method pattern mit "geschützten Methoden" Allgemeine Java-Themen 5
T Pattern: Passive View Allgemeine Java-Themen 2
K Verständnisprobleme bei Observer-Pattern mit größerem Datenmodell Allgemeine Java-Themen 32
T Pattern: Greedy, Reluctant, Possessive Allgemeine Java-Themen 4
S Hilfe bei Pattern Allgemeine Java-Themen 5
Tandibur Denkfehler bei Pattern.matches? Allgemeine Java-Themen 3
Tandibur pattern dynamisch vorkompilieren Allgemeine Java-Themen 9
A Observer Pattern: feuern bei neuer Referenz-Zuweisung? Allgemeine Java-Themen 8
N Pattern Allgemeine Java-Themen 11
Iron Monkey Pattern - Matcher - Problem Allgemeine Java-Themen 3
ruutaiokwu welches design pattern? frage an die oo-experten unter euch... Allgemeine Java-Themen 3
G Accordion Design Pattern Frage Allgemeine Java-Themen 2
hdi Hilfe beim Design (Stichwort OO, Pattern, ...) Allgemeine Java-Themen 11
U Verständnisschwierigkeiten Observer Pattern Allgemeine Java-Themen 18
H2SO3- String(pattern) von SimpleDateFormat auslesen Allgemeine Java-Themen 7
M Problem mit Pattern Allgemeine Java-Themen 3
N Welches design pattern? Allgemeine Java-Themen 8
B Pattern gesucht, Programm Optionen, Casten vermeiden Allgemeine Java-Themen 3
D Welches Pattern kann ich nutzen? Allgemeine Java-Themen 9
J Suche regex-Pattern fuer Liste von Zahlen zwischen 0-100 Allgemeine Java-Themen 6
G Sequenzdiagramm Dao Pattern Allgemeine Java-Themen 3
D Observer/Observable Pattern vs. Listener-Konzept Allgemeine Java-Themen 4
S regex-Pattern Ausdruck negieren Allgemeine Java-Themen 2
J Pattern eines Textes Allgemeine Java-Themen 4
M Java Garbage Collector Frage (Singleton Pattern) Allgemeine Java-Themen 13
Y Pattern Problem Allgemeine Java-Themen 2
G UML-Diagramme mit DAO Pattern Allgemeine Java-Themen 7
S Pattern regex Allgemeine Java-Themen 2
G Composite, Design Pattern, printTree Allgemeine Java-Themen 42
J Regex Pattern Problem Allgemeine Java-Themen 12
P MVC Pattern Allgemeine Java-Themen 31
C Pattern für Kommunikation gesucht Allgemeine Java-Themen 3
G Frage zu MVC Pattern Allgemeine Java-Themen 6
J Pattern und Regex Allgemeine Java-Themen 2
L Wie Pattern anwenden um Cipher zu nutzen Allgemeine Java-Themen 2
S Singleton Pattern mit Generics Allgemeine Java-Themen 4
M MVC Design Pattern - Verständniss Fragen Allgemeine Java-Themen 3
F Typüberprüfung in Superklasse - geeignetes Pattern? Allgemeine Java-Themen 11
M Java Pattern hilfe Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben