PHP 戦略パターンの使用

不言
リリース: 2023-03-23 21:02:01
オリジナル
2279 人が閲覧しました

質問:

1. アヒルのクラスを定義すると、水泳と外観の 2 つのメソッドがあります。
2. 需要が増えたら、アヒルが鳴いたり鳴いたりするための方法を追加する必要があります。
3. すべてのアヒルが鳴いたり鳴いたりできるわけではありません。プラスチック製のアヒルは飛べず、鳴くだけですが、ゴム製のアヒルは飛ぶことができません。吠える。
4. ニーズが再び変化すると、新しいカエルの種類が追加され、カエルは泣くことができます。

など。要件が変わるとコードの扱いが難しくなります。この時点で戦略パターンを検討できます。

戦略パターンを使用すると、コードは次のようになります

1. フライングインターフェイスを作成します

public interface Fly {    public void flyBehavior();
}
ログイン後にコピー

2. このインターフェイスを実装するために必要なクラスを作成します

public class FlyNoWay implements Fly{

    @Override
    public void flyBehavior() {
        System.out.println("不会飞");
    }

}
ログイン後にコピー
rree

3.クラス

public class FlyWithWings implements Fly{

    @Override
    public void flyBehavior() {
        System.out.println("用翅膀飞");
    }

}
ログイン後にコピー

4. サブクラスは親クラスを継承し、サブクラスに独自の特性を持たせます

public abstract class Duck {    //多态形式定义飞行
    private Fly fly;    //多态的形式定义叫声
    private QuackBehavior quackBehavior;    public void display(){
        System.out.println("黄色的鸭子");
    }    public void swim(){
        System.out.println("鸭子可以游泳");
    }    public void perforFly(){
        fly.flyBehavior();
    }    public void perforQuack(){
        quackBehavior.quack();
    }    public Fly getFly() {        return fly;
    }    public void setFly(Fly fly) {        this.fly = fly;
    }    public QuackBehavior getQuackBehavior() {        return quackBehavior;
    }    public void setQuackBehavior(QuackBehavior quackBehavior) {        this.quackBehavior = quackBehavior;
    }


}
ログイン後にコピー

5. この時点でカエルクラスを追加する必要がある場合は、同じように鳴く音も記述されています。戦略パターンによりコードが柔軟になります。

6. テストクラス

public class RubberDuck extends Duck{

    public RubberDuck(){        //在创造这个子类的时候就确定了它具体的飞行和叫声方法
        setFly(new FlyNoWay());
        setQuackBehavior(new MuteQuack());
    }    @Override
    public void display() {
        System.out.println("白色的橡皮鸭");
    }
}
ログイン後にコピー

概要

public class TestMain {    public static void main(String[] args) {
        KeDaDuck keDaDuck = new KeDaDuck();
        keDaDuck.display();
        keDaDuck.perforFly();
        keDaDuck.perforQuack();
        PlasticDuck plasticDuck = new PlasticDuck();
        plasticDuck.display();
        plasticDuck.perforFly();
        plasticDuck.perforQuack();
        RubberDuck rubberDuck = new RubberDuck();
        rubberDuck.display();
        rubberDuck.perforFly();
        rubberDuck.perforQuack();
        Rana rana = new Rana();
        rana.perforQuack();
    }
}
ログイン後にコピー

関連する推奨事項:

PHP 戦略パターン

サンプル分析 PHP 戦略パターン

以上がPHP 戦略パターンの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート