《JAVA设计模式》:策略模式

来源:互联网 发布:手机开淘宝店视频教程 编辑:程序博客网 时间:2024/06/06 08:26

策略模式:针对一组算法,将每一个算法封装到具有共同接口的独立类中,从而使它们可以相互替换。

策略模式结构:

超类中的某些行为抽取出一个接口或抽象类,每个行为由具体的行为类实现。

在实际使用过程中,子类继承超类,子类特有的行为交由具体的行为类实现。

使用场景:

1.所有鸭子都会游泳;

2.每种鸭子飞行方式不同,可以把飞行行为抽取为接口,每种飞行方式交由特定的飞行类实现。

源码举例:

鸭子超类:

public abstract class Duck {FlyBehavior flyBehavior;public abstract void display();public void performFly(){flyBehavior.fly();}public void swim(){System.out.println("all ducks  can swim");}}
飞行行为接口:

public interface FlyBehavior {public void fly();}
1.翅膀飞行:

public class FlyWithWings implements FlyBehavior {@Overridepublic void fly() {System.out.println("I am flying with wings");}}

2.不能飞行:

public class FlyNoWay implements FlyBehavior {@Overridepublic void fly() {System.out.println("I cant fly");}}
子类鸭子:

1.mini鸭

public class MiniDuck extends Duck {@Overridepublic void display() {System.out.println("I am a miniDuck");}public MiniDuck() {flyBehavior = new FlyWithWings();}}
2.模型鸭子

public class ModelDuck extends Duck {@Overridepublic void display() {System.out.println("I am a model duck");}public ModelDuck() {flyBehavior = new FlyNoWay();}}
测试代码:

public class DuckTest {public static void main(String[] args) {Duck miniduck = new MiniDuck();Duck modelduck = new ModelDuck();miniduck.performFly();modelduck.performFly();}}






0 0
原创粉丝点击