广告
返回顶部
首页 > 资讯 > 精选 >java设计模式中策略模式的示例分析
  • 354
分享到

java设计模式中策略模式的示例分析

2023-06-20 16:06:24 354人浏览 独家记忆
摘要

小编给大家分享一下java设计模式中策略模式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!策略模式策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实

小编给大家分享一下java设计模式中策略模式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!

    策略模式

    策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。用算法族分别封装起来,实现同一个接口,让他们之间可以互相替换,让算法的变化独立于使用算法的客户。

    • 主要解决:在有多种算法相似的情况下,使用 if…else 所带来的复杂和难以维护。

    • 如何解决:将这些算法封装成一个一个的类,任意地替换。

    • 何时使用:一个系统有许多许多类,而区分它们的只是他们直接的行为。

    使用场景:

    • 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

    • 一个系统需要动态地在几种算法中选择一种。

    • 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

    优点缺点
    算法可以自由切换策略类会增多
    避免使用多重条件判断所有策略类都需要对外暴露
    扩展性良好

    java设计模式中策略模式的示例分析

    • 环境类(Context):持有抽象策略类的引用,用来操作策略的上下文环境。

    • 抽象策略类(Strategy):策略的抽象类或接口,给出所需实现接口。

    • 具体策略类(ConcreteStrategy):具体的策略实现。

    Demo

    有几种鹅:天鹅、野鹅、灰鹅,鹅有各种行为,如飞、游泳、叫等。

    假设天鹅灰鹅飞行能力一般,野鹅飞行能力优秀;天鹅野鹅游泳能力一般,灰鹅游泳能力优秀。

    首先看第一种方法:

    java设计模式中策略模式的示例分析

    这种方法固然可以实现目的,但问题显而易见,子类过多覆盖父类方法,代码未复用,耦合度很高。使用策略模式,简单来说,就是封装子类行为成接口,父类包含该接口即可。

    java设计模式中策略模式的示例分析

    代码:

    public interface FlyBehavior {    void fly();}public class FlyGood implements FlyBehavior {    @Override    public void fly() {        System.out.println("飞行能力优秀");    }}public class FlyNORMal implements FlyBehavior {    @Override    public void fly() {        System.out.println("飞行能力一般");    }}
    public interface SwimBehavior {    void swim();}public class SwimGood implements SwimBehavior {    @Override    public void swim() {        System.out.println("游得好");    }}public class SwimNormal implements SwimBehavior {    @Override    public void swim() {        System.out.println("游得一般");    }}
    public abstract class Goose {    //策略接口    FlyBehavior flyBehavior;    SwimBehavior swimBehavior;    //其他属性等...    public void setFlyBehavior(FlyBehavior flyBehavior) {        this.flyBehavior = flyBehavior;    }    public void setSwimBehavior(SwimBehavior swimBehavior) {        this.swimBehavior = swimBehavior;    }}public class Swan extends Goose{    public Swan() {        flyBehavior=new FlyNormal();        swimBehavior=new SwimNormal();    }}public class WildGoose extends Goose{    public WildGoose() {        flyBehavior=new FlyGood();        swimBehavior=new SwimNormal();    }}public class GreyGoose extends Goose{    public GreyGoose() {        flyBehavior=new FlyNormal();        swimBehavior=new SwimGood();    }}
    public class Client {    public static void main(String[] args) {        Swan swan=new Swan();        swan.flyBehavior.fly();        WildGoose wildGoose=new WildGoose();        wildGoose.swimBehavior.swim();        GreyGoose greyGoose=new GreyGoose();        greyGoose.flyBehavior.fly();        greyGoose.setFlyBehavior(new FlyGood()); //改变某个对象的行为        greyGoose.flyBehavior.fly();    }}

    运行结果:

    java设计模式中策略模式的示例分析

    看完了这篇文章,相信你对“java设计模式中策略模式的示例分析”有了一定的了解,如果想了解更多相关知识,欢迎关注编程网精选频道,感谢各位的阅读!

    --结束END--

    本文标题: java设计模式中策略模式的示例分析

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

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

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

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

    下载Word文档
    猜你喜欢
    • java设计模式中策略模式的示例分析
      小编给大家分享一下java设计模式中策略模式的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!策略模式策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实...
      99+
      2023-06-20
    • Java设计模式之策略模式实例分析
      这篇文章主要介绍“Java设计模式之策略模式实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java设计模式之策略模式实例分析”文章能帮助大家解决问题。1.基本介绍1)策略模式(Strateg...
      99+
      2023-06-30
    • java策略模式的示例分析
      这篇文章给大家分享的是有关java策略模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换。类型:行为类模式类图:  &...
      99+
      2023-05-30
      java
    • Java设计模式之策略模式示例详解
      目录定义结构UML类图UML序列图深入理解策略模式策略和上下文的关系策略模式在JDK中的应用该策略接口有四个实现类策略模式的优点策略模式的缺点策略模式的本质在讲策略模式之前,我们先看...
      99+
      2022-11-13
    • java设计模式策略模式图文示例详解
      目录策略模式意图问题解决方案真实世界类比策略模式结构伪代码策略模式适合应用场景实现方式策略模式优缺点策略模式优缺点与其他模式的关系策略模式 亦称:Strategy 意图 策略模式是一...
      99+
      2022-11-13
    • C#策略模式的示例分析
      小编给大家分享一下C#策略模式的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!策略模式所谓策略其实就是做一件事情有很多很多的方法,比如说一个商场要搞促销,...
      99+
      2023-06-29
    • JavaScript设计模式策略模式案例分享
      前言 策略设计模式就是指一个问题匹配多个解决方法,不一定要用到哪一个,而且有可能随时增加多个方案 比如我们去买书,书店都会搞一些优惠活动,满100减20,满200减50,八折优惠这些...
      99+
      2022-11-13
    • Java策略模式实例分析
      这篇文章主要讲解了“Java策略模式实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java策略模式实例分析”吧!优点算法可以自由切换。避免使用多重条件判断。扩展性良好。缺点策略类会增...
      99+
      2023-06-29
    • Java设计模式之策略模式
      在一个收银系统中,如果普通用户、中级会员、高级会员分别对应着不同的优惠策略,常规编程就要使用一系列的判断语句,判断用户类型,这种情况下就可以使用策略模式。 一、概念理解 策略模式的概...
      99+
      2022-11-13
      Java 设计模式 策略模式
    • Java设计模式之策略模式案例详解
      目录优缺点Spring中哪里使用策略模式策略模式设计图代码案例为什么使用策略模式 答:策略模式是解决过多if-else (或者switch-case)代码块的方法之一,提高代码的可维...
      99+
      2022-11-13
    • Java设计模式之策略模式深入刨析
      目录1.基本介绍2.传统方式3.采用策略模式4.策略模式的注意事项和细节1.基本介绍 1)策略模式(Strategy Pattern)中,定义算法族(策略组),分别封装起来,让他们之...
      99+
      2022-11-13
    • Java 设计模式中的策略模式详情
      目录策略模式的应用场景是否符合有没有必要不用策略模式例子使用策略模式策略上下文策略接口以及具体实现类Main类两种方式的不同策略模式有没有必要使用?如何避免Context类使用判断逻...
      99+
      2022-11-13
    • java设计模式--策略模式详解
      目录策略模式Demo代码:总结策略模式 策略模式(Strategy Pattern)属于行为型模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。用算法族分别封装起来...
      99+
      2022-11-12
    • java设计模式中适配器模式的示例分析
      这篇文章给大家分享的是有关java设计模式中适配器模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、结构型模式结构型模式有什么好处?从程序的结构上实现松耦合,从而可以扩大整体的类结构,用来解决更大的...
      99+
      2023-06-15
    • java设计模式之状态模式的示例分析
      这篇文章给大家分享的是有关java设计模式之状态模式的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 定义 很多时候,一个对象的行为会根据一个动态的属性变化而变化,这...
      99+
      2022-10-19
    • Java设计模式之工厂模式的示例分析
      这篇文章主要为大家展示了“Java设计模式之工厂模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java设计模式之工厂模式的示例分析”这篇文章吧。具体如下:工厂模式主要是为创建对象提...
      99+
      2023-05-30
      java
    • web前端中策略模式的示例分析
      这篇文章将为大家详细讲解有关web前端中策略模式的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。策略模式(Strategy Pattern)策略模式简单描述就是:...
      99+
      2022-10-19
    • Java设计模式之java策略模式详解
      目录为什么使用策略模式?策略模式包含角色策略模式的类图排序案例策略模式的优点策略模式的缺点适用场景源码分析策略模式的典型应用Java Comparator 中的策略模式参考文...
      99+
      2022-11-12
    • Java特性之设计模式【策略模式】
      一、策略模式 概述 在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式 在策略模式中,我们创建表示各种策略的对象和一个行为随...
      99+
      2023-10-18
      策略模式 java 设计模式
    • java设计模式的策略模式是什么
      这篇文章主要介绍“java设计模式的策略模式是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“java设计模式的策略模式是什么”文章能帮助大家解决问题。策略模式亦称:Strategy意图策略模式是...
      99+
      2023-07-02
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作