策略模式详解附有代码案例分析(包含策略模式在源码中的应用以及代码示例)

您所在的位置:网站首页 简单排序编码法案例解析 策略模式详解附有代码案例分析(包含策略模式在源码中的应用以及代码示例)

策略模式详解附有代码案例分析(包含策略模式在源码中的应用以及代码示例)

2024-07-06 19:22| 来源: 网络整理| 查看: 265

策略模式 一、策略模式的概念与角色(一)、策略模式的概念(二)、策略模式的角色 二、策略模式的应用场景三、策略模式的通用写法四、策略模式的支付案例代码示例五、策略模式在源码中的应用六、策略模式的优缺点(一)、优点(二)、缺点 七、设计模式的相关博客文章链接1、七大设计原则的简单解释(包含合成复用原则),简单理解、快速入门,具备案例代码2、工厂模式详解附有代码案例分析(简单工厂,工厂方法,抽象工厂)3、单例模式详解及代码案例与应用场景(饿汉式单例模式、懒汉式单例模式、注册式单例模式)4、原型模式详解附有代码案例分析(浅克隆和深克隆的相关解析)5、建造者模式详解附有代码案例分析(包含建造者模式与工厂模式的区别分析)6、门面模式详解附有代码案例分析7、装饰者模式详解附有代码案例分析8、享元模式详解附有代码案例分析(包含享元模式的源码应用分析——String中的享元模式应用、Integer中的享元模式应用)9、组合模式详解附有代码案例分析(包含透明组合模式、安全组合模式的代码示例)10、桥接模式详解附有代码案例分析11、适配器模式详解附有代码案例分析(包含类适配器、对象适配器以及接口适配器的代码示例)12、委派模式详解附有代码案例分析(包含委派模式在JDK中的源码示例解析)13、模板方法模式详解附有代码案例分析(包含模板方法模式重构JDBC操作业务代码示例)14、策略模式详解附有代码案例分析(包含策略模式在源码中的应用以及代码示例)15、责任链模式详解附有代码案例分析(包含责任链模式与建造者模式的结合代码案例)16、迭代器模式详解附有代码案例分析(包含迭代器模式的源码应用分析)17、命令模式详解附有代码案例分析(包含命令模式的源码应用分析)18、状态模式详解附有代码案例分析(包含状态模式与其他相关设计模式的对比)19、备忘录模式详解附有代码案例分析20、中介者模式详解附有代码案例分析21、解释器模式详解附有代码案例分析22、观察者模式详解附有代码案例分析(包含观察者模式使用JDK方式实现)23、访问者模式详解附有代码案例分析

一、策略模式的概念与角色 (一)、策略模式的概念

​ 策略模式又叫做政策模式,它是将 定义的算法家族、分别封装起来,让他们之间可以互相替换,从而让算法的变化不会影响到使用算法的用户。属于行为型模式。

​ 策略模式使用的就是面向对象的继承和多态机制,从而实现统一行为在不同场景下具备不同实现。

(二)、策略模式的角色

​ 1、上下文角色(Context):用来操作策略的上下文环境,屏蔽高层模块(客户端)对策略,算法的直接访问,封装可能存在的变化。

​ 2、抽象策略角色(Strategy):规定策略或算法的行为。

​ 3、具体策略角色(ConcreteStategy):具体的策略或算法实现。

二、策略模式的应用场景

​ 1、针对同一类型问题,有多种处理方式,每一种都能独立解决问题。

​ 2、算法需要自由切换场景。

​ 3、需要屏蔽算法规则的场景。

三、策略模式的通用写法

抽象策略类:Strategy

public interface Strategy { void algorithm(); }

具体策略类:ConcreteStrategyA

public class ConcreteStrategyA implements Strategy { @Override public void algorithm() { System.out.println("Strategy A"); } }

具体策略类:ConcreteStrategyB

public class ConcreteStrategyB implements Strategy { @Override public void algorithm() { System.out.println("Strategy B"); } }

上下文:Context

public class Context { private Strategy mStrategy; public Context(Strategy strategy) { this.mStrategy = strategy; } public void algorithm() { this.mStrategy.algorithm(); } }

测试类:

public class Test { public static void main(String[] args) { //选择一个具体策略 Strategy strategy = new ConcreteStrategyA(); //来一个上下文环境 Context context = new Context(strategy); //客户端直接让上下文环境执行算法 context.algorithm(); } } 四、策略模式的支付案例代码示例

MsgResult:

public class MsgResult { private int code; private Object data; private String msg; public MsgResult(int code, Object data, String msg) { this.code = code; this.data = data; this.msg = msg; } @Override public String toString() { return "MsgResult{" + "code=" + code + ", data=" + data + ", msg='" + msg + '\'' + '}'; } }

Payment:

public abstract class Payment { public abstract String getName(); public MsgResult pay(String uid, double amount) { if (queryBalance(uid)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3