Tengo la siguiente interfaz.¿Es este un decorador o un patrón de estrategia, o ninguno de los dos?
PowerSwitch.java
public interface PowerSwitch {
public boolean powerOn();
public boolean powerOff();
public boolean isPowerOn();
}
La interfaz anterior debe consistir en el conjunto mínimo de métodos que cualquier otra funcionalidad se puede derivar de, para que sea tan fácil como sea posible para agregar implementaciones PowerSwitch adicionales.
me gustaría agregar funcionalidad a la interfaz PowerSwitch en tiempo de ejecución (lo decoradores lo hacen), mediante la creación de una clase que contiene una composición de una instancia de PowerSwitch y añade nuevos métodos, como los dos toggleOnOff() métodos abajo. De esa manera solo necesito implementar los dos métodos de alternar una vez y se aplicará a todas las implementaciones de PowerSwitch.
¿Esto se considera como una buena/mala práctica? Si es malo, ¿alguna otra recomendación?
Realmente no cumple con el patrón de decorador ya que agrega métodos adicionales. ¿Es un patrón de estrategia o un patrón de composición? ¿O tiene otro nombre de patrón? ¿Hay algo así como un "decorador de interfaz"?
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();
}
}
¿Por qué no PowerSwitchDecorator implementar la interfaz PowerSwitch? Ciertamente podría ... – Ani