广告
返回顶部
首页 > 资讯 > 精选 >java设计模式之策略模式怎么实现
  • 667
分享到

java设计模式之策略模式怎么实现

java 2023-05-31 00:05:28 667人浏览 泡泡鱼
摘要

这篇文章主要介绍了java设计模式之策略模式怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。策略模式:策略模式是一种定义一系列算法的方法,算法完成的工作都是相同的工作,

这篇文章主要介绍了java设计模式之策略模式怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

策略模式:策略模式是一种定义一系列算法的方法,算法完成的工作都是相同的工作,但是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合。

Java实现一个策略模式:

需求:商场收银系统,收银方式为正常收费,打八折,满300返100,这三种收费方式。

创建一个超类。即收费的抽象方法。

public abstract class CashSuper {  public abstract double acceptCash(double money);}

创建实现此超类的类。

public class CashNORMal extends CashSuper {   @Override  public double acceptCash(double money) {    return money;  } }

根据商场收费方式的不同,创建三种收费方式的具体实现算法类

public class CashRebate extends CashSuper {  private double moneyRebate=1;    public CashRebate(String moneyRebate){    this.moneyRebate=Double.parseDouble(moneyRebate);  }  @Override  public double acceptCash(double money) {            return money*moneyRebate;  }}
public class CashReturn extends CashSuper {    private double moneyCondition=0;  private double moneyReturn=0;    public CashReturn(String moneyCondition,String moneyReturn){    this.moneyCondition=Double.parseDouble(moneyCondition);    this.moneyReturn=Double.parseDouble(moneyReturn);  }      @Override  public double acceptCash(double money) {        double result=money;    if(money>=moneyCondition){      result=money-Math.floor(money/moneyCondition)*moneyReturn;    }        return result;  }}
public class CashNormal extends CashSuper {  @Override  public double acceptCash(double money) {    return money;  }}

写一个Context来通过同一个方法进行 不同付费方式的实现。因为需要创建不同的对象,所以需要结合简单工厂模式来实现。

public class CashContext {  private CashSuper cs=null;    public CashContext(String type){    switch (type) {    case "正常收费":      CashNormal cs0=new CashNormal();      cs=cs0;      break;    case "满300返100":      CashReturn cr1=new CashReturn("300", "100");      cs=cr1;      break;    case "打八折":      CashRebate cr2=new CashRebate("0.8");      cs=cr2;      break;          }  }    public double GetResult(double money){    return cs.acceptCash(money);  }  }

测试

public class Test {  public static void main(String[] args) {        double a=new CashContext("打八折").GetResult(300);    System.out.println(a);    double b=new CashContext("正常收费").GetResult(300);    System.out.println(b);    double c=new CashContext("满300返100").GetResult(300);    System.out.println(c);  }}

控制台。

240.0
300.0
200.0

总结:策略模式简化了单元测试,因为每个算法都是自己的类,可以通过自己的接口单独测试。

策略模式是用来封装算法的,但是在实际使用过程中,可以用他来封装几所任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性。

自己感悟:总的来说,策略模式对算法进行了封装,例如功夫熊猫,继承动物的超类之后,既需要有实现语言的功能,又需要实现功夫的功能,使用策略模式,将各个算法分开,在使用的时候可以很好的组合在一起。

感谢你能够认真阅读完这篇文章,希望小编分享的“java设计模式之策略模式怎么实现”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: java设计模式之策略模式怎么实现

本文链接: https://www.lsjlt.com/news/222588.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java设计模式之策略模式怎么实现
    这篇文章主要介绍了java设计模式之策略模式怎么实现,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。策略模式:策略模式是一种定义一系列算法的方法,算法完成的工作都是相同的工作,...
    99+
    2023-05-31
    java
  • Java设计模式之策略模式
    在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的概...
    99+
    2022-11-13
    Java 设计模式 策略模式
  • Java行为型设计模式之策略模式怎么实现
    本文小编为大家详细介绍“Java行为型设计模式之策略模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java行为型设计模式之策略模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。1.策略设计模...
    99+
    2023-07-04
  • Java特性之设计模式【策略模式】
    一、策略模式 概述 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式 在策略模式中,我们创建表示各种策略的对象和一个行为随...
    99+
    2023-10-18
    策略模式 java 设计模式
  • Java设计模式之java策略模式详解
    目录为什么使用策略模式?策略模式包含角色策略模式的类图排序案例策略模式的优点策略模式的缺点适用场景源码分析策略模式的典型应用Java Comparator 中的策略模式参考文...
    99+
    2022-11-12
  • java策略设计模式怎么实现
    在Java中实现策略设计模式,可以按照如下步骤进行:1. 定义一个策略接口(或者抽象类),该接口包含多个具体策略类共同的方法。2. ...
    99+
    2023-08-31
    java
  • Java设计模式之策略模式实例分析
    这篇文章主要介绍“Java设计模式之策略模式实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之策略模式实例分析”文章能帮助大家解决问题。1.基本介绍1)策略模式(Strateg...
    99+
    2023-06-30
  • PHP行为设计模式之策略模式怎么实现
    这篇“PHP行为设计模式之策略模式怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“PHP行为设计模式之策略模式怎么实现...
    99+
    2023-07-06
  • C#设计模式之策略模式
    策略模式 所谓策略其实就是做一件事情有很多很多的方法,比如说一个商场要搞促销,促销的方式有可能有很多:打折啊,满100返50啊、积分等等之类的。这种不同的促销方式在我们系统中表示就是...
    99+
    2022-11-13
  • javascript设计模式之策略模式
    目录一. 认识策略模式二. 具体实现和思想三. 策略模式的实际运用四. 总结一. 认识策略模式 策略模式的定义:定义一系列的算法,将他们一个个封装起来,使他们直接可以相互替换。 策略...
    99+
    2022-11-12
  • JS设计模式之策略模式怎么用
    小编给大家分享一下JS设计模式之策略模式怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!策略模式的概念引用:在软件开发中也常...
    99+
    2022-10-19
  • Android设计模式之策略模式怎么使用
    本篇内容主要讲解“Android设计模式之策略模式怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android设计模式之策略模式怎么使用”吧!1、收到需求假设我们需要自定义的 View ...
    99+
    2023-07-05
  • Java设计模式之策略模式深入刨析
    目录1.基本介绍2.传统方式3.采用策略模式4.策略模式的注意事项和细节1.基本介绍 1)策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之...
    99+
    2022-11-13
  • Java设计模式之策略模式案例详解
    目录优缺点Spring中哪里使用策略模式策略模式设计图代码案例为什么使用策略模式 答:策略模式是解决过多if-else (或者switch-case)代码块的方法之一,提高代码的可维...
    99+
    2022-11-13
  • Java设计模式之策略模式示例详解
    目录定义结构UML类图UML序列图深入理解策略模式策略和上下文的关系策略模式在JDK中的应用该策略接口有四个实现类策略模式的优点策略模式的缺点策略模式的本质在讲策略模式之前,我们先看...
    99+
    2022-11-13
  • 深入了解Java设计模式之策略模式
    目录定义解决的问题核心要点类图溢出效用代码实现核心接口实现类-三个Context类Main方法拓展JDK源码Spring源码定义 定义了算法家族,分别封装起来,让他们之间可以相互替换...
    99+
    2022-11-13
  • 深入理解Java设计模式之策略模式
    目录一、什么是策略模式二、策略模式的结构三、策略模式的应用场景四、策略模式的优缺点六、策略模式的实现七、策略模式和简单工厂模式的结合八、策略枚举的实现九、总结一、什么是策略模式 策略...
    99+
    2022-11-12
  • java设计模式--策略模式详解
    目录策略模式Demo代码:总结策略模式 策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。用算法族分别封装起来...
    99+
    2022-11-12
  • PHP行为设计模式之策略模式
    目录PHP策略模式(Strategy Pattern)适用性实现步骤优点缺点示例代码PHP策略模式(Strategy Pattern) 策略模式是一种行为设计模式,它允许在运行时选择...
    99+
    2023-05-15
    PHP行为设计模式 PHP策略模式
  • JavaScript设计模式之策略模式详解
    什么是设计模式?为什么需要学习设计模式? 学习设计模式的目的是:为了代码可重用性、让代码更容易被他人理解、保证代码可靠性。 设计模式使代码编写真正工程化;设计模式是软件工程的基石脉络...
    99+
    2022-11-13
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作