У меня есть следующий интерфейс.
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();
}
}