策略模式【Strategy Pattern】

这篇具有很好参考价值的文章主要介绍了策略模式【Strategy Pattern】。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题,
嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子
的。
1
先说这个场景中的要素:
  1. 三个妙计
  2. 一个锦囊
  3. 一个赵云
妙计是小亮同志给的,妙计是放置在锦囊
里,俗称就是锦囊妙计嘛,那赵云就是一个干活的人,从锦囊中取出妙计,执行,然后获胜,用 JAVA 程序
怎么表现这个呢?我们先看类图:

 策略模式【Strategy Pattern】,设计模式,策略模式

 

代码实现

(1)编写3个妙计

定义妙计策略接口 

package strategy;

/**
 * 策略接口:妙计
 *
 * 锦囊一:到达东吴,先去拜会乔国老;锦囊二:刘备贪念美色不思离开,就对他谎称曹操大军压境;锦囊三:如果被东吴军队追赶,求孙夫人解围。
 *
 * @author 1
 */
public interface IStrategy {
    /**
     * 锦囊妙计
     */
    public void operate();
}
package strategy;

/**
 * 第一个锦囊
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/9 17:02
 */
public class FirstMethod implements IStrategy {
    @Override
    public void operate() {
        System.out.println("锦囊一:到达东吴,先去拜会乔国老.");
    }
}
package strategy;

/**
 * 第二个锦囊
 *
 * @author 1
 * @version 1.0
 * @description: 第二个锦囊
 * @date 2023/8/9 17:04
 */
public class SecondMethod implements IStrategy {

    @Override
    public void operate() {
        System.out.println("锦囊二:刘备贪念美色不思离开,就对他谎称曹操大军压境.");
    }
}
package strategy;

/**
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/9 17:07
 */
public class ThirdMethod implements IStrategy {
    @Override
    public void operate() {
        System.out.println("锦囊三:如果被东吴军队追赶,求孙夫人解围.");
    }
}

(2)编写锦囊

package strategy;

/**
 * 锦囊
 *
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/9 17:08
 */
public class Context {

    private IStrategy strategy;



    public Context(IStrategy strategy) {
        this.strategy = strategy;
    }

    /**
     * 使用锦囊
     */
    public void operate() {
        this.strategy.operate();
    }
}

(3)编写赵云(使用锦囊的人)有兴趣可以看两种调用方法,没兴趣看第一个就行

package strategy;

/**
 * @author 1
 * @version 1.0
 * @description: TODO
 * @date 2023/8/9 16:59
 */
public class ZhaoYun {




    /**
     *方法一:
     * @param args
     */
    public static void main(String[] args) {

        Context context;
        //1.赵云到吴国拿出第一个锦囊
        context = new Context(new FirstMethod());

        context.operate();
        //2.刘备不想走,拿出第二个锦囊
        context = new Context(new SecondMethod());
        context.operate();
        //3.孙权有追兵,拿出第三个锦囊
        context = new Context(new ThirdMethod());
        context.operate();
    }


    /**方法二:
        条件封装,因为需要new的三个妙计提前是知道的,可以封装到map中,依次调用
     * @param args
     */
//    public static void main(String[] args) {
//        Map<Integer, IStrategy> map = new HashMap<Integer, IStrategy>() {{
//            put(1, new FirstMethod());
//            put(2, new SecondMethod());
//            put(3, new ThirdMethod());
//        }};
//
//        Context context;
//        //1.赵云到吴国拿出第一个锦囊
//        context = new Context(map.get(1));
//        context.operate();
//        //2.刘备不想走,拿出第二个锦囊
//        context = new Context(map.get(2));
//        context.operate();
//        //3.孙权有追兵,拿出第三个锦囊
//        context = new Context(map.get(3));
//        context.operate();
//    }

}

执行结果

策略模式【Strategy Pattern】,设计模式,策略模式文章来源地址https://www.toymoban.com/news/detail-643347.html

到了这里,关于策略模式【Strategy Pattern】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【设计模式-03】Strategy策略模式及应用场景

    Java 官方文档 Overview (Java SE 18 JDK 18) module index https://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 JDK 18) declaration: module: java.base, package: java.util, interface: Comparator https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Compar

    2024年01月22日
    浏览(45)
  • 【设计模式-02】Strategy策略模式及应用场景

    Java 官方文档 Overview (Java SE 18 JDK 18) module index https://docs.oracle.com/en/java/javase/18/docs/api/index.html Java中使用到的策略模式 Comparator、comparable Comparator (Java SE 18 JDK 18) declaration: module: java.base, package: java.util, interface: Comparator https://docs.oracle.com/en/java/javase/18/docs/api/java.base/java/util/Compar

    2024年01月16日
    浏览(45)
  • C++设计模式_04_Strategy 策略模式

    接上篇,本篇将会介绍C++设计模式中的 Strategy 策略模式 ,和上篇 模板方法Template Method 一样,仍属于“组件协作”模式,它与Template Method有着异曲同工之妙。 在软件构建过程中,某些对象使用的算法可能多种多样ÿ

    2024年02月09日
    浏览(40)
  • 【设计模式——学习笔记】23种设计模式——策略模式Strategy(原理讲解+应用场景介绍+案例介绍+Java代码实现)

    有各种鸭子,比如野鸭、北京鸭、水鸭等。 鸭子有各种行为,比如走路、叫、飞行等。不同鸭子的行为可能略有不同。要求显示鸭子的信息 不同的鸭子继承一个父类Duck,如果是相同的行为就继承,不同行为就重写方法 实现 【鸭子抽象类】 【野鸭】 【北京鸭】 【玩具鸭】

    2024年02月12日
    浏览(60)
  • 策略模式【Strategy Pattern】

    刘备要到江东娶老婆了,走之前诸葛亮给赵云(伴郎)三个锦囊妙计,说是按天机拆开解决棘手问题, 嘿,还别说,真是解决了大问题,搞到最后是周瑜陪了夫人又折兵呀,那咱们先看看这个场景是什么样子 的。 1 先说这个场景中的要素: 三个妙计 一个锦囊 一个赵云 妙计

    2024年02月13日
    浏览(38)
  • 策略模式(Strategy Pattern)

      在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。 意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护

    2024年02月05日
    浏览(37)
  • 设计模式--组合模式(Composite Pattern)

    组合模式(Composite Pattern)是一种结构型设计模式,它允许你将对象组合成树形结构,并且能像使用独立对象一样使用它们。 组合模式主要包含以下几个角色: Component:这是组合中对象声明接口,在适当的情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管

    2024年02月22日
    浏览(44)
  • 设计模式——状态模式(State Pattern)

    对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 1.1、定义状态接口 1.2、定义开始状态实现类 1.3、定义停止状态实现类 1.4、创建 Context 类 1.5、使用 Context 来查看当状态 State 改变时的行为变化。 创建型模式 结构型模式 1、设计模式——

    2024年02月06日
    浏览(43)
  • 【设计模式--原型模式(Prototype Pattern)

    原型模式(Prototype Pattern)是一种创建型设计模式,它的主要目的是通过复制现有对象来创建新的对象,而无需显式地使用构造函数或工厂方法。这种模式允许我们创建一个可定制的原型对象,然后通过复制它来创建新的对象,从而避免了重复构建相似的对象。 在原型模式中

    2024年02月11日
    浏览(40)
  • 设计模式-组合模式(Composite Pattern)

    组合模式是一种结构型设计模式,它允许将对象组合成树状的层次结构,用来表示“整体-部分”的关系。 原理图 抽象角色(Component) :这是组合模式的核心,它定义了树叶和树枝构件的公共接口,并可能提供一些默认行为。在透明式的组合模式中,它还声明了访问和管理子

    2024年04月12日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包