设计模式-策略模式

liuchd liuchd     2022-12-15     315

关键词:

策略模式(strategy pattern)

策略模式(strategy pattern):策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。

策略模式是针对一组算法,将每个算法封装到具有公共接口的独立的类中,从而使它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。

 

策略模式结构

技术图片

 

Context是上下文,用一个ConcreteStrategy来配置,维护一个对Strategy对象的引用;

Strategy是策略类,用于定义所有支持算法的公共接口;

ConcreteStrategy是具体策略类,封装了具体的算法或行为,继承于Strategy。

 

代码:
//环境角色(Context): 持有一个Strategy类的引用
public class Context
    //Strategy类的引用
    private Strategy strategy;
    //设置具体的策略
    public void setStrategy(Strategy strategy)
        this.strategy = strategy;
    
    //执行策略的相关算法
    public void contextInterface()
        strategy.algorithmInterface();
      


//抽象策略角色(Strategy):
//这是一个抽象角色,通常由一个接口或抽象类来实现。
//此角色给出所有具体策略类所需实现的接口。
public interface Strategy
    public void algorithmInterface();


//具体策略角色(ConcreteStrategy):包装了相关算法或行为。
public class concreteStrategy
    public void algorithmInterface()
        System.out.println("这是算法");
    

  

 

 

 

 

 

 

设计原则

1、找出应用中需要变化之处,把它们独立出来、不要和那些不需要变化的代码混在一起

2、针对接口编程,而不是针对实现编程

3、多用组合、少用继承

 

优点:

1、 策略类之间可以自由切换。由于策略类都实现同一个接口,所以使它们之间可以自由切换。

2、 易于扩展。增加一个新的策略只需要添加一个具体的策略类即可,基本不需要改变原有的代码。

3、 避免使用多重条件选择语句,充分体现面向对象设计思想。

缺点:
1、客户端必须知道所有的策略类,并自行决定使用哪一个策略类。
2、策略模式会造成很多的策略类。
应用场景: 

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

 

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

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

 

 
 
 

 

java设计模式---策略模式(案例解析)

策略模式一、概念1、理解策略模式策略模式是一种行为型模式,它将对象和行为分开,将行为定义为一个行为接口和具体行为的实现。策略模式最大的特点是行为的变化,行为之间可以相互替换。每个if判断都可以理解为就是一... 查看详情

设计模式-策略模式

策略模式(strategypattern)策略模式(strategypattern):策略模式定义了算法族,分别封装起来,让它们之间可以相互替换,此模式让算法的变化独立于使用算法的客户。策略模式是针对一组算法,将每个算法封装到具有公共接口的独立的... 查看详情

设计模式之策略模式

策略模式属于对象行为型的设计模式定义:封装了一些列算法,它们之前可以相互替换,此模式使得算法的改变,不会影响到使用它们的客户端  策略模式有以下3个角色组成抽象策略类:所有策略类的父类,为所支持的... 查看详情

设计模式中的多态——策略模式详解(代码片段)

目录1.关于策略模式2.策略模式详解2.1策略模式定义2.2策略模式的UML类图3.策略模式的优点3.1一个使用策略模式的例子3.2与其他实现方式的对比3.3使用策略模式的优点4.使用工厂方法模式改进原有策略模式5.总结5.参考资料1.关于策... 查看详情

设计模式——策略模式

一、策略模式案例一二、策略模式案例二:实现表单验证普通的表单验证功能实现:使用策略模式实现: 查看详情

设计模式——策略模式

一、策略模式案例一二、策略模式案例二:实现表单验证普通的表单验证功能实现:使用策略模式实现: 查看详情

设计模式——策略模式

一、策略模式案例一二、策略模式案例二:实现表单验证普通的表单验证功能实现:使用策略模式实现: 查看详情

设计模式——策略模式

策略模式的重点并不是策略的实现,而是策略的管理的使用!应用场景:当同一种职责,有不同的实现方式的时候可以使用策略管理;角色:1、策略抽象类  2、策略的具体实现   3、策略环境(此类的作用在代... 查看详情

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

设计模式笔记-策略模式文章目录设计模式笔记-策略模式1.策略模式2.常见写法3.常见框架中的策略模式1.策略模式策略模式(Strategy),定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换,在使... 查看详情

设计模式(十四)——策略模式

设计模式(十四)——策略模式一、策略模式简介1、策略模式简介    策略模式定义了算法家族,分别封装起来,让不同算法之间可以互相替换,使算法的变化不会影响到使用算法的客户。    策略... 查看详情

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

设计模式笔记-策略模式文章目录设计模式笔记-策略模式1.策略模式2.常见写法3.常见框架中的策略模式1.策略模式策略模式(Strategy),定义了一组算法,将每个算法都封装起来,并且使它们之间可以互换,在使... 查看详情

设计模式--策略模式

策略模式是指对一系列的算法定义,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。策略模式的优点有:策略模式提供了管理相关的算法族的办法、策略模式提供了可以... 查看详情

设计模式之-策略模式

1、策略模式定义:将一系列算法封装起来,为了以后可以互相替换使用,由策略类和context组成,context接受用户信息,然后将请求委托给策略类(现实生活中,我们要去一个城市,交通方式就有:飞机、高铁、开车、大巴等,这... 查看详情

设计模式(十七)---策略模式

1、简介  策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。2、策略模式的结... 查看详情

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

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

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

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

设计模式之策略模式

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

设计模式之策略模式

1、定义  策略模式属于对象的行为模式。其用意是针对一组算法,将每一组算法封装到具有共同接口的独立子类中,从而可以使得他们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。2、策略模式... 查看详情