Designfrage zu Dateimanager

Status
Nicht offen für weitere Antworten.

Arbon

Bekanntes Mitglied
Hallo. Ich möchte gerne einen einfachen Dateimanager in java programmieren. Dieser soll relativ modular aufgebaut sein, also zB mehrere "Dateisysteme" unterstützen (also mit normalen Files arbeiten, oder auch auf einem FTP-Server) sowie Kopierlisten anbieten (Beim Kopieren wird also alles in eine Kopierliste eingefügt, und später die gesamte Kopierliste in den zielordner kopiert. Die kopierliste soll dazwischen auch bearbeitbar sein).

Ich habe mir bereits einige Gedanken über den Aufbau gemacht.

Es soll erstmals eine abstrakte "lightweight" Basisklasse für Files geben. In dieser gibt es einige Methoden und Objekte die für Dateien und Ordner gleich sind, also der Pfad (eine eigene Klasse die einen Pfad repräsentiert), das zu verwendende Filesystem (wie oben erwähnt sollen ja verschiedene unterstützt werden) sowie das zu verwendende Kopierlistenprinzip und ein paar Methoden. Von dieser Basisklasse werden die beiden Klassen Datei und Ordner abgeleitet, die dann jeweils spezielle Methoden wie copy enthalten (bei ordnern wird der ordner inklusive unterordner und dateien kopiert, bei einer datei nur die datei usw).

Diese 3 Objekte, also Kopierliste, Filesystem und Filepfad sind Interfaces, die dann jeweils implementiert werden (so kann es zb eine Kopierliste mit Fifo-Prinzip und eine mit Filo-Prinzip, etc. geben, oder ein Pfadsystem nach Unix- oder Windows prinzip).

Dies wäre vorerst mal meine Idee eins Grundaufbaues. Falls man sich darunter nichts vorstellen kann, hier nochmal das ganze als Pseudocode

Code:
interface CopyList {
...
}

class FifoCopyList implements CopyList {
...
}

interface FileSystem {
...
}

class NormalFileSystem implements FileSystem {
...
}

interface FilePath {
...
}

class UnixFilePath implements FilePath {
...
}

abstract class BaseFile {

protected static CopyList copyList;
protected static FileSystem fileSystem;
protected static FilePath filePath;

...
}

...
}

class NormalFile extends BaseFile{
...
}

class Directory extends BaseFile{
...
}



Wie man hier nun recht gut sieht, sollte dies ermöglichen während der Laufzeit zB auf eine Lifo-Kopierliste umzustellen, indem zB einfach BaseFile.copyList = new LifoCopyList(); aufgerufen wird.

Nun würde ich gerne wissen, was ihr so von diesem Design hält, was noch zu verbesern wäre oder was total schlecht ist.
 

andre111

Bekanntes Mitglied
Ich versteht nicht ganz warum ein BaseFile eine CopyList als Member hat ???:L
Außerdem sollten die Member von BaseFile IMHO nicht static sein.
 

Arbon

Bekanntes Mitglied
Also static deswegen, damit man eben einfach global zB eben das Kopierlistenprinzip setzen kann. Wie könnte man dies sonst machen? In BaseFile befindet sich die CopyList, damit man später eben darauf zugreifen kann. Ich hatte vor es so zu machen, dass man dann mit file.copy() das file in die Kopierliste hinzufügt. Der quelltext würde dann in etwa copyList.addElement(this) lauten. Eine externe Bibliothek hatte ich eigendlich nicht vor zu benutzen, da ich mir etwas eigenes überlegen und erstellen will.
 

JanHH

Top Contributor
Ähm, vielleicht wärs gut zu wissen, welchen Sinn das ganze haben soll!? java bietet von sich aus schon genügend "abstrakten Zugriff" auf Dateien und Dateisysteme, auch bei unterschiedlichen Betriebssystemen. Mir kommt das alles ziemlich überflüssig vor. Ist das eine Übung, oder soll das Programm später auch einen tatsächlichen Nutzen haben? Und wenn ja, dann welchen?

Ansonsten handelt es sich da ja eher um eine Diskussion über Softwaredesign an sich.. da kann man endlos viel zu sagen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben