Hallo
Ich habe eine Architektur-Frage. Ich möchte nach außen (außerhalb der Core) möglichst nur mit Schnittstellen arbeiten, um einige Modifikationen (z.B. setzen von Properties) nur über bestimmte Methoden zu zulassen.
Hier zunächst einmal die Typen, auf die ich mich nachfolgend beziehe:
Die Kommunikation zwischen Core und GUI soll über eine Instanz von ISession ablaufen.
Das Setzen des "Superior" soll nur über ISession#changeSuperior(...) möglich sein (da neben dem setzen des Properties in Employee noch andere Aktionen durchgeführt werden müssen). Da außerhalb der Core nur die Schnittstelle IEmployee bekannt ist, kann man createEmployee nur eine Instanz dieser Schnittstelle übergeben. createEmployee hat deshalb (ohne Casten) keinen Zugriff auf die setSuperior(...)-Methode (da diese ja nicht Teil der Schnittstellendefinition ist). Eine Möglichkeit wäre das Casten von IEmployee zu Employee. Das möchte ich jedoch ungern tun.
Habt ihr Ideen / Anregungen, wie ich das Problem lösen könnte?
Vielen Dank im voraus.
Ich habe eine Architektur-Frage. Ich möchte nach außen (außerhalb der Core) möglichst nur mit Schnittstellen arbeiten, um einige Modifikationen (z.B. setzen von Properties) nur über bestimmte Methoden zu zulassen.
Hier zunächst einmal die Typen, auf die ich mich nachfolgend beziehe:
Java:
interface IEmployee {
String getName();
IEmployee getSuperior();
// ...
}
Java:
class Employee implements IEmployee {
private String name;
private IEmployee superior;
// ...
Employee(String name, IEmployee superior) {
this.name = name;
this.superior = superior;
}
@Override
public String getName() {
return this.name;
}
void setName(String name) {
this.name = name;
}
@Override
public IEmployee getSuperior() {
return this.superior;
}
void setSuperior(IEmployee superior) {
this.superior = superior;
}
// ...
}
Java:
interface ISession {
IEmployee createEmployee(String name, IEmployee superior);
boolean changeSuperior(IEmployee employee, IEmployee Superior);
// ...
}
Die Kommunikation zwischen Core und GUI soll über eine Instanz von ISession ablaufen.
Das Setzen des "Superior" soll nur über ISession#changeSuperior(...) möglich sein (da neben dem setzen des Properties in Employee noch andere Aktionen durchgeführt werden müssen). Da außerhalb der Core nur die Schnittstelle IEmployee bekannt ist, kann man createEmployee nur eine Instanz dieser Schnittstelle übergeben. createEmployee hat deshalb (ohne Casten) keinen Zugriff auf die setSuperior(...)-Methode (da diese ja nicht Teil der Schnittstellendefinition ist). Eine Möglichkeit wäre das Casten von IEmployee zu Employee. Das möchte ich jedoch ungern tun.
Habt ihr Ideen / Anregungen, wie ich das Problem lösen könnte?
Vielen Dank im voraus.