策略模式

策略模式定义

定义一系列算法类,将每一个算法封装起来,并让它们可以相互替换。

策略模式结构图

在这里插入图片描述

策略模式角色介绍

抽象策略类,Strategy,一个抽象类或具体类,也可以是接口,负责声明算法接口;客户端面向抽象策略类编程,持有抽象策略类类型成员变量。

具体策略类,ConcreteStrategy,它实现了在抽象策略类中声明的算法,在运行时,客户端的抽象策略类型成员变量指向具体策略类对象,使用一种具体的算法实现某个业务处理。

策略模式结构代码

抽象策略类:

public interface Strategy {

    void request();
}

具体策略A:

public class ConcreteStrategyA implements Strategy {
    public void request() {
        System.out.println("我是策略A");
    }
}

具体策略B:

public class ConcreteStrategyB implements Strategy {
    public void request() {
        System.out.println("我是策略B");
    }
}

客户端:

public class Client {

    public static void main(String[] args) {
        //按照策略A执行
        Strategy strategy = new ConcreteStrategyA();
        strategy.request();

        //按照策略B执行
        strategy = new ConcreteStrategyB();
        strategy.request();
    }
}
策略模式运行机制

策略模式中客户端持有抽象策略类型成员变量;
所有的策略子类负责实现各种策略算法;
实际业务中,随着业务需要,客户端抽象策略类型成员变量不断变换指向的具体策略对象,执行不同的策略算法;
策略模式是依赖倒转和里氏替换原则的具体体现。

策略模式解决的核心问题

策略模式为业务提供所有策略算法,客户端可以按需随时替换使用;策略模式解决了逻辑中if判断问题,可以随时对策略进行扩展,符合开闭原则;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值