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?