Ho la seguente interfaccia.È un decoratore o un modello di strategia, o nessuno dei due?
PowerSwitch.java
public interface PowerSwitch {
public boolean powerOn();
public boolean powerOff();
public boolean isPowerOn();
}
L'interfaccia sopra dovrebbe consistere di un insieme minimo di metodi che qualsiasi altra funzionalità possono essere derivati da, per rendere il più semplice possibile aggiungere implementazioni PowerSwitch aggiuntivi.
vorrei aggiungere funzionalità all'interfaccia PowerSwitch in fase di esecuzione (cosa decoratori fare), creando una classe che detiene una composizione di un'istanza PowerSwitch e aggiunge nuovi metodi, come i due toggleOnOff() metodi sotto. In questo modo ho solo bisogno di implementare i due metodi di commutazione una volta e si applicherà a tutte le implementazioni PowerSwitch.
È considerata una buona/cattiva pratica? Se cattivo, qualche altro consiglio?
In realtà non è conforme al modello di decorazione in quanto aggiunge ulteriori metodi. È un modello di strategia o uno schema di composizione? O ha un altro nome di modello? Esiste un "decoratore di interfacce"?
PowerSwitchDecorator.java
public class PowerSwitchDecorator {
private PowerSwitch ps;
public PowerSwitchDecorator(PowerSwitch ps) {
this.ps = ps;
}
public void toggleOnOff(int millis) throws InterruptedException{
powerOn();
Thread.sleep(millis);
powerOff();
}
public void toggleOnOff(){
powerOn();
powerOff();
}
public boolean powerOn() {
return ps.powerOn();
}
public boolean powerOff() {
return ps.powerOff();
}
public boolean isPowerOn() {
return ps.isPowerOn();
}
}
perché non PowerSwitchDecorator implementare l'interfaccia PowerSwitch? Certamente potrebbe ... – Ani