我有以下界面。这是一个装饰者还是战略模式,或者两者都不是?
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();
}
}
为什么不PowerSwitchDecorator实现PowerSwitch的界面?它当然可以... – Ani