您的位置:首页 > 其它

设计模式--策略模式

2016-04-05 22:22 267 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/mnikn/article/details/51068825

当一个基类会派生出不同的子类,而这些子类拥有自己特有的行为时,我们可以考虑使用策略模式。

public interface FlyBehavior {
void fly();
}

public class FlyWithSwings implements FlyBehavior{

@Override
public void fly() {
System.out.println("Now I fly with swings!");
}

}

public class FlyNoWay implements FlyBehavior{

@Override
public void fly() {
System.out.println("I can't fly!");
}

}

abstract class Duck{

private FlyBehavior flyBehavior;

public abstract void getName();

Duck(){
flyBehavior = new FlyNoWay();
}

public void setFlyBehavior(FlyBehavior flyable){
flyBehavior = flyable;
}

public void performFly(){
flyBehavior.fly();
}

}

class RedDuck extends Duck{
void getName(){
System.out.println("I'm a red duck!");
}
}

class YellowDuck extends Duck{
void getName(){
System.out.println("I'm a yellow duck!");
}
}

class Main{
public static void main(String[] args){
Duck duck = new RedDuck();
duck.performFly();

duck = new RedDuck();
duck.setFlyBehavior(new FlyWithSwings());
duck.getName();
duck.performFly();

duck = new YellowDuck();
duck.getName();
duck.performFly();
}
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: