设计模式笔记-策略模式(代码片段)

SingleOneMan SingleOneMan     2023-02-21     763

关键词:

设计模式笔记-策略模式

文章目录

1.策略模式

策略模式(Strategy),定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换,在使用时,根据传入的类型不同,随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法

策略模式和简单工厂模式的区别:

工厂是创建型模式,它的作用就是创建对象,简单工厂模式根据传入的类名不同创建不同的类

策略模式直接替换相应的方法或者事件,策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;

2.常见写法

具体实现:

1.定义策略接口或者抽象策略类

2.实现具体的策略或者继承抽象类实现重写抽象策略类接口

3.定义Context 类,contetx中定义方法根据不同的策略类型操作策略

4.使用的时候根据不同的策略类型替换相应的策略

public interface Strategy 
    public int doOperation(int num1, int num2);

public class OperationAdd implements Strategy 
    @Override
    public int doOperation(int num1, int num2) 
        return num1 + num2;
    


public class OperationMultiply implements Strategy 
    @Override
    public int doOperation(int num1, int num2) 
        return num1 * num2;
    

public class Context 
    private Strategy strategy;

    public Context(Strategy strategy)
        this.strategy = strategy;
    

    public int executeStrategy(int num1, int num2)
        return strategy.doOperation(num1, num2);
    

public class test 
    public static void main(String[] args) 
        Context context = new Context(new OperationAdd());
        System.out.println(context.executeStrategy(1,2));

        context = new Context(new OperationMultiply());
        System.out.println(context.executeStrategy(1,2));
    

3.常见框架中的策略模式

1.spring中的AbstractFileResolvingResource(implements Resource)抽象类,spring 将会提供不同的 Resource 实现类,不同的实现类负责不同的资源访问逻辑

2.DispatchServlet中的初始化组件中,用到了getDefaultStrategies方法,它接受spring应用上下文和具体组件接口类型作为参数,来决定不同组件的默认类型以实现组件的初始化操作

策略模式应用场景(代码片段)

有个大神写的很好:参考:设计模式学习笔记(四:策略模式)参考:设计模式学习笔记(二:观察者模式)参考:设计模式学习笔记-代理模式一、策略模式: (1)解决场景:某个功能有多个方案可以实现,要达到某个目的... 查看详情

设计模式学习笔记之策略模式(代码片段)

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。(来自百度的定义)单从概念上看总觉得晕乎乎的,下面我们来看一个小例子... 查看详情

android设计模式笔记-策略模式(代码片段)

介绍:软件开发过程中常遇到这种情况:实现某一个功能可以有多重算法或者策略,我们会根据情况不同选择不同的算法或者策略来完成该功能。遇到这种情况,以前我的一般处理方法是将多种方法写在一个类中&... 查看详情

设计模式笔记--委派(代码片段)

这是Tom老师课上的总结://客户请求(Boss)、委派者(Leader)、被被委派者(Target)//委派者要持有被委派者的引用//代理模式注重的是过程,委派模式注重的是结果//策略模式注重是可扩展(外部扩展),委派模式注重内部的灵... 查看详情

大数据讲课笔记5.4mapreduce运行模式(代码片段)

文章目录零、学习目标一、导入新课二、新课讲解(一)MapReduce运行模式1、本地运行模式2、集群运行模式(二)MapReduce性能优化策略1、数据输入2、Map阶段3、Reduce阶段4、Shuffle阶段5、其它调优属性三、归纳总结... 查看详情

孪生兄弟状态模式与策略模式有什么区别,究竟该如何选择(代码片段)

...它们实际所代表的的事物特征是有本质区别的,选择哪个设计模式,代表了你看待业务场景的角度。从合理角度地对业务进程抽象,选择恰当的设计模式,才能让代码有更好的结构。这篇文章重点说说我对状态模式和策略模式区... 查看详情

kafka学习笔记&面经分享(代码片段)

目录定义使用消息队列的好处消息队列的两种模式点对点模式发布/订阅模式kafka基础架构kafka架构kafka工作流程kafka文件存储机制kafka生产者分区策略分区的原因分区的原则数据可靠性保证副本数据同步策略ISRack应答机制故障处理... 查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

代码片-策略模式+工厂模式(代码片段)

通过策略类实现不同场景的策略处理,通过工厂模式创建不同的策略对象1.策略实现接口、策略实现类1.1策略接口/***策略接口*/publicinterfaceIWarnRulepublicvoidwarn();1.2策略实现类/***防拆告警策略实现类*/publicclassAntiRemovalWarnimplements... 查看详情

设计模式---策略模式(代码片段)

...f0c;每一条途径对应一种算法,此时我们可以使用一种设计模式来实现灵活地选择解决途径,也能够方便地增加新的解决途径。策略模式包含角色Contex 查看详情

设计模式策略模式(简介|适用场景|优缺点|代码示例)(代码片段)

...略模式适用场景三、策略模式优缺点四、策略模式与其它设计模式五、策略模式代码示例1、促销策略接口2、满减促销策略3、返现促销策略4、空促销策略5、促销策略工厂6、促销活动7、测试类一、策略模式简介策略模式:定义了... 查看详情

设计模式——策略模式(代码片段)

设计模式(十二)——策略模式新专题:设计模式,我会在博客(http://www.hollischuang.com)及微信公众号(hollischuang)同步更新,欢迎共同学习。前几篇文章主要介绍了几种创建型模式,本文开始介绍行为型模式。首先介绍一个比较简... 查看详情

设计模式笔记2:策略模式

1.1 需求  设计一个商场打折计费的软件,可以实现打折,满300送100等优惠功能。 1.2类图  1.3  实现  我们先把4个计算的类写出来。  ViewCode   在写负责创建对象和调用的CashCoxt类  ViewCode ... 查看详情

设计模式-策略模式(代码片段)

...以相互替换。 将不变的部分和变化的部分隔开是每个设计模式的主题。策略模式的目的就是将算法的实现和算法的使用分离开来。 策略模式包含三个角色:  Context:环境类  Strategy:抽象策略类  ConcreteStrategy:... 查看详情

设计模式之-策略模式(strategypattern)(代码片段)

...,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。 C++实... 查看详情

设计模式---策略模式(代码片段)

...,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的context对象。策略对象改变context对象的执行算法。举一个例... 查看详情

设计模式-策略模式(strategypattern)(代码片段)

classVersionResourceResolverprivateIStrategystargegy;//接口多态实现策略publicvoiddostargegy.doSomeThing();  查看详情