Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

Hallo,

ich schreibe gerade ein Kommandozeilenprogramm.

Dabei benutze ich das StrategyMuster zur Auswahl verschiedener Algorithmen. Um den entsprechenden Kontext zu setzen, benutze ich eine Menü, die aus 2 Schritten besteht. Erst wählt man eine gröbere Beschreibung dessen, was man tun will(nennen wir es Aufgabe), danach präzisiert man das noch(Unteraufgabe).

Im Moment werden die As und Us in einer .ini-Datei abgespeichert, die so aussieht:

A1

A2

*U1

*U5

A3

*U2

...

d.h. die jeweilige A und dadrunter mit Stern am Anfang der Zeile markiert die dazugehörigen Us.

Ich würde es aber lieber in irgendeiner sinnvollen Weise im Code programmieren. Ich könnte mir vorstellen, die einzelnen As/Us einfach als Strings (ggf. internationalisiert) als Variablen abzulegen und...

genau... was dann?

Könnte man eine Methode schreiben, die aus einer Klasse alle finalen 'Strings' nimmt und sie in (z.B.) eine Liste packt?

Wie könnte ich die Struktur nachbilden?

Wie liesse sich sowas noch einigermaßen generisch halten(im Sinne: wie könnte ich ohne weiteres die As/Us austauschen/ergänzen)?

Ich hoffe, mein Problem klar dargestellt zu haben... und freu mich über jeden Vorschlag!

klingt auf den ersten Blick nicht sonderlich spektakulär. Warum nimmst du nicht einfach n mehrdimensionales Array. In der einen Dimension speicherst du die As und in der anderen dimension die zugehörigen bs ?

Oder du speicherst einfach Arrays in nem Array ?

Quick and Dirty könnte mans auch einfach hart mit ein paar if-else-blöcken coden ...

ne schicke OO-Lösung gibts sicher auch, aber ich checke dein Vorhaben nciht ganz. Daher lohnt sich das Spekulieren da nicht.

Ich hätte gern eine Struktur, die einen (einfachen/mehrfachdim) Array 'alleine' aus einer anderen Klasse füllt. Zum Beispiel. (Kann mir vorstellen, dass man es vllt anders besser macht...)

Und ich würde es gerne beim Überprüfen um welche Bs es sich handelt die if-else durch "irgendwas" ersetzen

Das ist doch ein Baum, da bietet sich doch XML an und damit wäre das ganze zu internationalisieren auch kein Problem. Lesen kannst Du die Einträge dann via XPATH


<xml>

<language value="deutsch">

<menu name="aufgabe 1">

<menu name="untermenü 1.1"/>

</menu>

<menu name="aufgabe 2"/>

</language>


<language value="english">

....

HTH Phil

flashpixx, natürlich hast du Recht und xml ist auch so ziemlich das Erste, woran ich dachte. Gewünscht ist aber eine reine Java-Lösung :o

xml ist auch so ziemlich das Erste, woran ich dachte. Gewünscht ist aber eine reine Java-Lösung

Was hat XML mit Java zu tun? Es bleibt doch eine Java Lösung. Du hast eben nur eine Datei wo die Information drin stehen. Okay, du kannst auch "faul" sein und die XML Datei in einen String in Java einbauen und dann direkt verarbeiten, aber die externe Datei ist eleganter

Phil

Wäre nicht das Compsite muster das was du brauchst?

Wenn du lange if-else Blöcke ersetzten willst dann hilft meist auch das State-Muster!

Ich kann mir leider auch nicht genau vorstellen wie du das haben willst aber die Java Swing-Komponenten sind Baumartig aufgebaut und diese folgen alle dem Composite-Muster. Mit dem State-Muster verlagerst du die "arbeit" in des Zustandsobjekt selbst...

Vielleicht hilft dir das weiter :)

Bearbeitet von -Peace-

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.