私は以下のインターフェースを持っています。これはデコレータかストラテジパターンか、どちらのパターンでもありませんか?
PowerSwitch.java
public interface PowerSwitch {
public boolean powerOn();
public boolean powerOff();
public boolean isPowerOn();
}
は、上記インターフェースは、追加PowerSwitch実装を追加する可能な限り簡単にするために、他の機能が由来することができる方法の最小セットで構成すべきです。私は2つのtoggleOnOff(のような、PowerSwitchインスタンスの組成物を保持し、新しいメソッドを追加するクラスを作成することによって、(デコレータは何をすべきか)実行時にPowerSwitchインターフェイスに機能を追加したいと思います
)方法以下。そうすれば、私は2回のトグル方法を一度実装するだけで済み、すべてのPowerSwitchの実装に適用されます。
これは良い/悪い習慣と考えられますか?悪い場合は、他の推奨事項はありますか?
それは余分なメソッドを追加するように、それは本当にデコレータパターンに準拠していません。それは戦略パターンか構図パターンか?それとも別のパターン名ですか? 「インターフェースデコレータ」のようなものはありますか?実行時に、あなたの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