Supponiamo di avere un'interfaccia Employee
e ci sono molte classi che la implementano, come Bob
, Joe
e Mary
, nessuna delle quali può essere cambiata.
public interface Employee{
public void work()
}
public class Mary implements Employee{
public void work(){
//Mary's implementation of work
}
}
Devo creare una classe Manager
che sia un wrapper per un oggetto Employee
. Quindi il costruttore per Manager
prende un oggetto di tipo Employee
Public class Manager{
private Employee employee;
public Manager(Employee employee){
this.employee = employee;
}
public void work(){
this.employee.work()
}
public void manage(){
//my implementation of manage
}
}
Quando viene creato un oggetto Manager
, dovrebbe avere tutti i metodi del% co_de sottostante più alcuni extra. La maggior parte dei metodi dell'oggetto Employee
sottostante non verrà sovrascritta (vedere Employee
), e quindi penso che dovrei estendere work
. Ma una classe non può estendere un'interfaccia. Attualmente, sto lavorando per dichiarare ciascuno dei metodi Employee
nella classe Employee
e averli semplicemente chiamati il metodo Manager
corrispondente. Ma sembra che sia inutile e che si rompa se l'interfaccia Employee cambia.
Poiché l'estensione di un'interfaccia non è consentita, qual è il modello di progettazione corretto per ciò che sto cercando di fare?