1

Bridge パターンを勉強していますが、質問があります。以下の私のコード例に関して、実装者である必要がありますか、それとも実装LightSwitch者として問題ありませんか? 私の問題は、誰が実装者でなければならないかを知ることです。両方の組み合わせが任意の順序で機能するようです。私がはっきり言っているかどうかはわかりません。FanSwitchSlider/RadialImplementation

class Main
{
    static function main()
    {
        new Main();
    }

    public function new()
    {
        var s:Switch;

        s = new LightSwitch();

        s.implementation = new SliderImplementation();
        s.on();
        s.off();

        s.implementation = new DialImplementation();
        s.on();
        s.off();

        s = new FanSwitch();

        s.implementation = new SliderImplementation();
        s.on();
        s.off();

        s.implementation = new DialImplementation();
        s.on();
        s.off();
    }
}

class Switch
{
    public var implementation:SwitchImplementation;
    public function new(){}
    public function on(){}
    public function off(){}
}

class LightSwitch extends Switch 
{
    public override function on()
    {
        trace("Light");
        implementation.on();
    }
    public override function off()
    {
        implementation.off();
    }
}

class FanSwitch extends Switch 
{
    public override function on()
    {
        trace("Fan");
        implementation.on();
    }
    public override function off()
    {
        implementation.off();
    }
}

class SwitchImplementation
{
    public function new(){}
    public function on(){}
    public function off(){}
}

class SliderImplementation extends SwitchImplementation
{
    public override function on()
    {
        trace("> Slider Switch [on]");
    }
    public override function off()
    {
        trace("> Slider Switch [off]");
    }
}

class DialImp lementation extends SwitchImplementation
{
    public override function on()
    {
        trace("> Dial Switch [on]");
    }
    public override function off()
    {
        trace("> Dial Switch [off]");
    }
}
4

1 に答える 1

0

あなたの例の実装Slider/RadialImplementation者はクラスです。それらは、クラスの抽象化によって公開されたインターフェースの背後に隠されています。Light/FanSwitch

于 2012-05-31T00:07:42.240 に答える