Java设计模式——策略模式

小灰灰 2023-09-27 10:19 194阅读 0赞

前言

在我们工作中经常会遇到if else多重判断的情况,每种具体的情况都需要单独写一个if去判断,如果后期需求变化需要重新去修改if判断条件,比较麻烦这时候可以使用策略模式.

一.策略模式简介

策略模式:策略模式是一种行为型模式,它将对象和行为分开,将行为定义为 一个行为接口 和 具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一个策略。本模式使得算法可独立于使用它的用户而变化.
这个模式涉及到三个角色:

  • 环境(Context)角色:持有一个Strategy的引用。
  • 抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所有的具体策略类所需的接口。
  • 具体策略(ConcreteStrategy)角色:包装了相关的具体算法或行为。

策略模式的案例代码如下:
针对不同会员等级,商品折扣不相同,普通打9.5折,会员打9折。
策略:

  1. public interface Strategy {
  2. /**
  3. * 策略方法
  4. */
  5. void strategyPrice(Double price);
  6. }

具体策略:

  1. public class UserStrategy implements Strategy {
  2. @Override
  3. public Double strategyPrice(Double price) {
  4. price=price*0.95;
  5. return price;
  6. }
  7. }
  8. public class VipUserStrategy implements Strategy {
  9. @Override
  10. public Double strategyPrice(Double price) {
  11. price=price*0.90;
  12. return price;
  13. }
  14. }

环境:

  1. public class Content {
  2. private Strategy strategy;
  3. public Content(String userType){
  4. if(userType=="user"){
  5. this.strategy= new UserStrategy();
  6. }
  7. if(userType=="vip"){
  8. this.strategy= new VipUserStrategy();
  9. }
  10. }
  11. /**
  12. * 策略方法
  13. */
  14. public void contextInterface(Double price){
  15. strategy.strategyPrice(price);
  16. }
  17. }

使用时需要:
new Content(“vip”).contextInterface(19.88);
new Content(“user”).contextInterface(19.88);

发表评论

表情:
评论列表 (有 0 条评论,194人围观)

还没有评论,来说两句吧...

相关阅读

    相关 Java设计模式——策略模式

    前言 在我们工作中经常会遇到if else多重判断的情况,每种具体的情况都需要单独写一个if去判断,如果后期需求变化需要重新去修改if判断条件,比较麻烦这时候可以使用策略

    相关 java设计模式-策略模式

    什么是策略模式: 策略模式就是处理类型较多,算法比较复杂,代码流程控制比较多,而且难以拓展,这时候,我们就可以使用策略模式了 开发中常用策略模式场景: 1.Sprin

    相关 java设计模式 - 策略模式

    设计一个小游戏 需求 要设计这样一个应用小游戏,游戏里面有不同类的任务,他们通过战斗打架赢得胜利,这些人物通过使用武器和使用法术战斗。 所有的人

    相关 java设计模式-策略模式

    java设计模式-策略模式 2016.12.07 13:56 1296浏览 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式

    相关 java设计模式-策略模式

    定义 策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 认识策略模式 策略模式的重心