本文共 2498 字,大约阅读时间需要 8 分钟。
尚硅谷视频连接https://www.bilibili.com/video/BV1G4411c7N4?from=search&seid=11487053970269878470
有各种鸭子(如:野鸭、北京鸭、水鸭等,鸭子有各种行为,比如叫、飞行等待)
显示鸭子的信息
1.鸭子抽象类
public abstract class Duck { //策略接口 protected FlyBehavior flyBehavior; public abstract void display(); public void quack() { System.out.println("鸭子嘎嘎叫~~~"); } public void swim() { System.out.println("鸭子会游泳~~~"); } public void fly() { if (flyBehavior != null) { flyBehavior.fly(); } } public void setFlyBehavior(FlyBehavior flyBehavior) { this.flyBehavior = flyBehavior; }}
2.鸭子飞接口
public interface FlyBehavior { void fly();}
3.不同鸭子实现类
public class WildDuck extends Duck { public WildDuck() { flyBehavior = new GoodFlyBehavior(); } @Override public void display() { System.out.println("这是野鸭...."); }}//================================public class PekingDuck extends Duck { public PekingDuck() { flyBehavior = new BadFlyBehavior(); } @Override public void display() { System.out.println("这是北京鸭子..."); }}//================================public class ToyDuck extends Duck { public ToyDuck() { flyBehavior = new NoFlyBehavior(); } @Override public void display() { System.out.println("这是玩具鸭..."); } @Override public void quack() { System.out.println("玩具鸭不能叫..."); } @Override public void swim() { System.out.println("玩具鸭不能游泳..."); }}
4.不同飞实现类
public class GoodFlyBehavior implements FlyBehavior { @Override public void fly() { System.out.println("飞翔技术高超..."); }}//================================public class BadFlyBehavior implements FlyBehavior { @Override public void fly() { System.out.println("飞翔技术一般..."); }}//================================public class NoFlyBehavior implements FlyBehavior { @Override public void fly() { System.out.println("不会飞..."); }}
5.客户端
public class Strategy { public static void main(String[] args) { WildDuck wildDuck = new WildDuck(); wildDuck.fly(); PekingDuck pekingDuck = new PekingDuck(); pekingDuck.fly(); ToyDuck toyDuck = new ToyDuck(); toyDuck.fly(); //更改pekingDuck飞行行为 pekingDuck.setFlyBehavior(new NoFlyBehavior()); pekingDuck.fly(); }}
参数Comparator接口为策略接口
转载地址:http://kmbcz.baihongyu.com/