策略模式

本文深入探讨了策略模式的设计理念,通过创建一系列可互换的算法对象,避免了在代码中使用冗余的条件判断。介绍了策略模式的基本结构,包括策略接口、具体策略实现以及上下文环境。并通过一个具体的例子,展示了如何在不同算法间灵活切换。

**介绍:**在策略模式中,我们会创建表示各种策略的对象,然后他们有相同的接口。还有一个行为会随着所关联的策略对象变化而变化的Context对象。

目的: 在多种算法相似的情况下,避免使用if…else去区别使用哪种算法。把这些算法都封装成一个一个的对象。使它们可以相互替换。

在这里插入图片描述

创建策略

//策略的抽象接口
interface Strategy {
    //排序操作
    void doOperate();
}
//三种策略的具体实现

class StrategyA implements Strategy{

    //排序算法的具体实现:冒泡
    public void doOperate() {
        System.out.println("排序操作的:冒泡排序");
    }
}

class StrategyB implements Strategy {
    //排序算法具体实现:快速排序
    public void doOperate() {
        System.out.println("排序操作的:快速排序");
    }
}
class StrategyC implements Strategy {
    //排序算法具体实现:堆排序
    public void doOperate() {
        System.out.println("排序操作的:堆排序");
    }
}


创建策略的运行环境

	//运行特定的策略环境
class Context{
    //内聚一个策略的抽象接口
    private Strategy strategy;

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

    public void invokeStrategy() {
        strategy.doOperate();
    }
}

public class StrategyPatten {
    public static void main(String[] args) {
        //创建一个策略:冒泡
        Strategy strategy = new StrategyA();
        Context context = new Context(strategy);
        context.invokeStrategy();
    }
}

适应场景
加入,要做一个日志记录功能,将数据写入数据库,但是日志的存储过程也可能会出现错误,所以 需要两种策略一种策略是直接存入数据库,另一种策略是如果数据库失败,存入文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值