当前位置:   article > 正文

java设计模式——行为型模式——策略模式_java 赠品策略

java 赠品策略

行为型模式——策略模式

策略模式概述

策略模式定义了一系列算法,并将每个算法封装起来,是它们可以相互替换,且算法的变化不会影响使用算法的客户。策略模式食欲对象行为模式,它通过对算法进行封装,把使用算法的责任和算法的实现分割开来,并委派给不同的对象对这些算法进行管理。

策略模式结构

在策略模式中有以下角色:

  • 抽象策略类:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  • 具体策略类:实现了抽象策略定义的接口,提供具体的算法实现或行为。
  • 环境类:持有一个策略类的引用,最终给客户端使用。

策略模式实现

(策略模式其实很想结构型模式中的桥接模式),其在环境类中聚合抽象策略类。

/**
 * Strategy类是抽象策略类
 */
public interface Strategy {
    void show();
}
/**
 * StrategyA、StrategyB、StrategyC类是具体策略类
 */
public class StrategyA implements Strategy{
    @Override
    public void show() {
        System.out.println("买一送一");
    }
}
public class StrategyB implements Strategy{
    @Override
    public void show() {
        System.out.println("满200减50");
    }
}
public class StrategyC implements Strategy{
    @Override
    public void show() {
        System.out.println("有赠品");
    }
}
/**
 * SalesMan类是环境类
 */
public class SalesMan {
    private Strategy strategy;

    public SalesMan(Strategy strategy) {
        this.strategy = strategy;
    }

    public void salesManShow(){
        strategy.show();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41

策略模式优缺点

优点:

  • 策略类之间可以自由切换,由于策略类都实现同一个接口,所以他们之间可以自由切换
  • 易于扩展:增加一个新的策略只需要添加一个具体的策略类即可,基本不需要修改原有代码

缺点:

  • 客户端必须知道所有的策略类,并自行决定哪一个策略类。
  • 策略模式将造成产生很多的策略类,可以通过使用享元模式在一定程度上减少类对象的数量

文章内容为个人学习总结,如有错误望指正。
参考链接https://www.bilibili.com/video/BV1Np4y1z7BU

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号