Heim >Backend-Entwicklung >PHP-Tutorial >Verwendung des PHP-Strategiemusters
1. Wenn wir eine Entenklasse definieren, gibt es zwei Methoden: Schwimmen und Aussehen.
2. Wenn die Nachfrage steigt, müssen wir Methoden hinzufügen, mit denen Enten fliegen und quaken können.
3. Nicht alle Enten können quaken oder fliegen, normale Enten können das, Plastikenten können nicht fliegen, aber nur die Gummiente kann nicht fliegen oder Quacksalber.
4. Wenn sich die Bedürfnisse wieder ändern, haben wir einen neuen Froschtyp hinzugefügt, und der Frosch kann schreien.
usw. Wenn sich die Anforderungen ändern, ist unser Code schwierig zu handhaben. Zu diesem Zeitpunkt können wir das Strategiemuster betrachten.
public interface Fly { public void flyBehavior(); }
public class FlyNoWay implements Fly{ @Override public void flyBehavior() { System.out.println("不会飞"); } }
public class FlyWithWings implements Fly{ @Override public void flyBehavior() { System.out.println("用翅膀飞"); } }
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; } }
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(); } }
1.多用组合,少用继承。 2.在项目开始前就策划好,让其代码变得有弹性,防止增加和改变需求。 3.把一样的放在本类里,把不一样的容易变的部分抽出去。最后在组合起来。
Verwandte Empfehlungen:
Beispielanalyse eines PHP-Strategiemusters
Das obige ist der detaillierte Inhalt vonVerwendung des PHP-Strategiemusters. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!