Architektur für Software

ottens

Aktives Mitglied
Hallo Liebe Leute,
ich habe ein Problem und möchte gerne hier Hilfe suchen.
Ich habe mehrere Java-Applikationen entwickelt
App_1, Ap_2, App_3 usw App_1 bereitet die Daten für App_2
und App_2 mach das selbe für App_3 usw.
Jetzt meine Frage :
Es gibt bei allen Applikationen 1,2 und 3 dieselbe Methoden,
die sich nur in paar Merkmale unterscheiden , wie geht man
hier vor damit man die Methoden nicht zwei/- bzw dreifach
schreibt ? Ist Strategie-Muster eine Lösung ?
für eine passende Lösung bin dankbar.
Ottens
 
Hallo stq,
danke für die schnelle Antwort.
z.B ich greife auf eine Datei unter user.home dort stehen paar Daten, die alle Applikationen
beim Starten lesen müssen (die Daten liegen als Key und Value z.B host = local , user = root u.s.w)
hier soll jede App ihre eigene Key, Value paare haben.
d.h jede Applikation 1,2 und 3 hat eine Methode z.B
leseDaten(){
/* Hier liest jede Applikation ihre eigene Keys und Values */
}
hoffe ist jetzt das Problem deutlicher. Danke euch
 
Zuletzt bearbeitet:
ja aber die Keys sind für jede App anders wo soll man die Keys packen?

Das lesen der Datei funktioniert für jede Applikation gleich. Sprich jede Applikation kann dieselbe Klasse zum lesen verwenden.
Du musst eig nur eine Liste von Keys mitgeben die dich wirklich interessieren, von diesen bekommst du den Value zurück
 
Du erstellst ein Library, die alle drei Anwendungen verwenden. Dann baust du die gemeinsam genutzte Funktionalität in eine eigene Klasse und packst sie in diese Library. Die Applikationen benutzen dann die Klasse aus der Library.
 
Hallo Joose,

die Keys sollen hard codiert werden ich lese anhand den Keys die Values aus
der Datei nehmen wir mal an die Klasse heißt FileManager jetzt wo soll man die hard
codierte Keys am elegantesten vereinbaren in welcher Klasse ?

danke dir
 
nehmen wir mal an die Klasse heißt FileManager jetzt wo soll man die hard codierte Keys am elegantesten vereinbaren in welcher Klasse ?

Es ist eine Mischung aus meiner und der Antwort von Tobse.
Du schreibst eine Library (ein nicht ausführbares jar File): Darin eine Klasse "FileManager" welche sich um das auslesen der Datei kümmert, diese Klasse hat zum Beispiel als Attribut eine Liste von Keys die ausgelesen werden sollen.

In deinen 3 Applikationen verwendest du nun die Libarary erstellst ein Objekt der Klasse Filemanager und befüllst die Liste von gewünschten Keys mit deinen Werten für die Applikation.
 
Kleines Beispiel:

Java:
// in App1
MyFileReader reader = new MyFileReader("key1", "key2", "key3");
Irgendwas daten = reader.readIrgendwas();

// in App2
MyFileReader reader = new MyFileReader("key5", "key2");
Irgendwas daten = reader.readIrgendwas();

// in common
public class MyFileReader {
  private String[] keys;

  public MyFileReader(String... keys) { this.keys = keys; }

  public Irgendwas readIrgendwas() { /* lese daten, abhängig von den keys */ }
}

Zur Verzeichnisstruktur deines Projekts:

Code:
meinProjekt/
  common/
    src/
      com/meinprojekt/common/
        MyFileReader.java
        Irgendwas.java
    out/
      common.jar
  app1/
    src/
      com/meinprojekt/app1/
        App1Code.java

Der Code unter common/src wird kompiliert und zur JAR-Datei common/out/common.jar gepackt. Die common/out/common.jar kommt dann in den Classpath für deine Anwendungen (und muss für das Packen in eine JAR-Datei natürlich auch mit!)
 
Hallo Joose,
ich lade die Datei in allen Apps (java.util.Properties) und das läuft gut
mein Problem wo soll ich die Keys definieren und wie soll ich alle Klassen strukturieren ?

danke euch
 
Hallo Tobse,

deine Idee bringt mich weiter danke dir aber muß noch Gedanken machen wie ich
die Idee anpasse, damit sie passt für mein Problem aber danke dir ganz herzlich.
ottens
 
Ich verstehe aber immer noch nicht warum das jetzt mehrere Applikationen sein müssen. Man kann Applikationen auch mit Parametern starten...
 
Hallo Thallius,
es geht hier um ETL-Process für DWH daher.
Diese Apps leisten noch mehr es sind nur die Start-Methoden, die fast identisch sind.
jede macht was anderes aber gemeinsame Grössen (Klassen oder Methoden) haben sie ja
auch.

danke dir
 

Zurück
Oben