设计模式之策略模式总结

定义

策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

实际例子

在Head First 设计模式的开篇就讲了一个策略模式的例子。

要实现一组鸭子类,每种鸭子类可能有不同的叫声、外形和飞行方式。

将鸭子作为一个抽象父类,同时定义叫声接口,外形接口,飞行接口。并对每一种叫声、外形、飞行方式都有一个具体的实现类(实现对应接口)。而在鸭子类中持有叫声、外形和飞行方式三个接口类型的成员变量。

对于具体的一种鸭子,在构造方法里使用不同的行为实现类对叫声、外形和飞行方式进行初始化。
具体代码:(在三个行为中只包括叫声接口)

//鸭子父类
public abstract class Duck {
    private FlyBehavior flyBehavior;

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

    public void setFlyBehavior(FlyBehavior flyBehavior) {
        this.flyBehavior = flyBehavior;
    }

    public FlyBehavior getFlyBehavior() {
        return flyBehavior;
    }
}

//飞行接口
public interface FlyBehavior {
    void fly();
}

//飞行实现类
public class FlyWithWing implements FlyBehavior {
    @Override
    public void fly() {
        System.out.println("fly with wing!");
    }
}

//具体鸭子类
public class BigDuck extends Duck {
    public BigDuck() {
        setFlyBehavior(new FlyWithWing());
    }

    public static void main(String[] args) {
        Duck duck = new BigDuck();
        duck.performFly();
    }
}

设计模式原则总结1

  • 封装变化
  • 多用组合,少用继承
  • 针对接口而不是实现编程
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 什么是策略模式?   策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。...
    纸中圆阅读 1,936评论 0 1
  • 一直想把常见的设计模式系统地学习一遍,结果和大多数人一样,过了几天就没能坚持下去了。我发现学习这件事情急不得,往往...
    Neulana阅读 611评论 5 2
  • 策略模式的定义 策略模式(Strategy Pattern):定义一系列算法,将每一个算法封装起来,并让它们可以相...
    戴先森Davi阅读 1,113评论 0 2
  • 二十三种设计模式 - 策略模式 策略模式简介 模式动机 完成一项任务,往往可以有多种不同的方式,每一种方式称为一个...
    JustTheSame阅读 1,898评论 2 16
  • 1. “牛津树”没听,听了廖彩杏的“the wheels on the bus”“five little monk...
    Yolanda_Hu阅读 164评论 0 0

友情链接更多精彩内容