I have the following interface.
PowerSwitch.java
public interface PowerSwitch {
public boolean powerOn();
public boolean powerOff();
public boolean isPowerOn();
}
上述接口应该包含最小的方法集,其他功能都可以从中派生,以使添加额外的PowerSwitch实现变得尽可能容易。我想在运行时向PowerSwitch接口添加功能(装饰器所做的),通过创建一个类来持有PowerSwitch实例的组合并添加新方法,如下面的两个toggleOnOff()方法。这样,我只需要一次实现这两个切换方法,就会应用于所有PowerSwitch实现。
这是否被认为是好/坏的实践?如果不好,有其他建议吗?
它不完全符合装饰器模式,因为它添加了额外的方法。这是策略模式还是组合模式?还是有其他模式名称?是否存在"接口装饰器"这样的东西? 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();
}
}