美文网首页
02- 策略模式(Strategy Pattern)

02- 策略模式(Strategy Pattern)

作者: shalk | 来源:发表于2018-05-02 22:26 被阅读0次

策略模式(Strategy Pattern)

概述

策略模式,是一种将策略封装类,并采取组合的方式,让策略使用者进行使用。

角色

策略接口: 定义策略的接口方法

策略具体实现: 实现策略接口

策略使用者:使用具体的策略

类图

image.png

当鸭子有许多种飞行方式,将飞行方式作为策略,单独进行抽象并实现,是的鸭子接口和具体的飞行方式进行了解耦,并且具体的鸭子可以根据需要调整需要使用的策略。

代码



abstract class  Duck {
    protected FlyStrategy strategy;
    public void setStrategy(FlyStrategy s) {
        this.strategy = s;
    }

    abstract void fly();
    abstract void quack();

}

interface  FlyStrategy {
    void tryFly();
}

class FlyHigh implements FlyStrategy {
    public void tryFly() {
        System.out.println("fly high");
    }
}

class FlyNoWay implements FlyStrategy {
    public void tryFly() {
        System.out.println("can't fly");
    }
}
class SuperDuck extends Duck {

    @Override
    void fly() {
        strategy.tryFly();
    }

    @Override
    void quack() {
        System.out.println("super quack");
    }
}
class YellowDuck extends Duck {


    @Override
    void fly() {
        strategy.tryFly();
    }

    @Override
    void quack() {
        System.out.println("ga ga ga");
    }
}

public class StrategyPattern {
    public static void main(String[] args) {
        SuperDuck duck = new SuperDuck();
        duck.setStrategy(new FlyHigh());
        duck.fly();
    }
}

总结

策略模式,符合三个设计原则,

  1. 封装变化,将不同的策略封装起来
  2. 多用组合,少用继承。组合更灵活,继承会影响到扩展性.
  3. 针对接口编程。

真实场景

  1. java.util.Comparator
  2. HttpServlet

相关文章

  • 设计模式-策略模式

    设计模式-策略模式 定义 策略模式(Strategy Pattern)也叫政策模式(Policy Pattern)...

  • 策略模式(Strategy pattern)

    策略模式的定义与特点 定义:策略模式(Strategy Pattern)又叫政策模式(Policy Pattern...

  • 02- 策略模式(Strategy Pattern)

    策略模式(Strategy Pattern) 概述 策略模式,是一种将策略封装类,并采取组合的方式,让策略使用者进...

  • 策略模式 -- 整体的替换算法

    1. 概述 所谓“策略”(strategy),即程序中的“算法”。策略模式(strategy pattern)可以...

  • 策略模式(strategy pattern)

    策略模式(Strategy pattern) 定义 Define a family of algorithms, ...

  • 策略模式

    策略模式(Strategy pattern),也叫政策模式(Policy Pattern),其定义如下: Defi...

  • 策略模式

    一、定义 策略模式(Strategy pattern)也叫政策模式(Policy Pattern),其定义为:定义...

  • java设计模式-策略模式

    策略模式(Strategy Pattern)也叫做政策模式(Policy Pattern),是一种行为型模式。 一...

  • iOS 设计模式-策略模式

    1.策略模式简介   策略模式(Strategy Pattern),是行为型模式之一(设计模式分类:https:/...

  • 行为型-Strategy

    策略模式的原理与实现 策略模式的原理与实现策略模式,英文全称是 Strategy Design Pattern。在...

网友评论

      本文标题:02- 策略模式(Strategy Pattern)

      本文链接:https://www.haomeiwen.com/subject/hkshrftx.html