java设计模式(十四)策略模式(Strategy Pattern)

1、模式介绍:

策略模式是一种行为设计模式,它定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。

2、应用场景:

当一个对象有多种行为,而需要动态选择一种行为时。
不同的策略可以实现不同的行为,客户端根据需要在运行时选择合适的策略。
当需要避免使用大量的条件判断语句来选择不同的行为时,可以使用策略模式来提高代码的可维护性。

3、优点:

策略模式提供了一种可以替换继承关系的方法,可以独立于客户端改变算法,易于扩展。
可以避免使用多重条件语句。
策略类之间可以自由切换,易于修改和测试。

4、缺点:

客户端必须了解所有的策略,并在适当的时候选择合适的策略,增加了客户端的复杂度。
策略模式会造成很多的策略类,增加了系统的对象数量。

5、代码示例:

/**
 * 排序策略接口
 *
 * @author FM_南风
 * @date 2024/7/3
 */
interface SortingStrategy {
   void sort(int[] data);
}

/**
 * 冒泡策略
 *
 * @author FM_南风
 * @date 2024/7/3
 */
public class BubbleSortStrategy implements SortingStrategy{
    @Override
    public void sort(int[] data) {
     // 冒泡排序算法实现
     System.out.println("使用冒泡算法实现");
    }
}

/**
 * 快速排序实现
 *
 * @author FM_南风
 * @date 2024/7/3
 */
public class QuickSortStrategy implements SortingStrategy{
	@Override
	public void sort(int[] data) {
		// 快速排序算法实现
		System.out.println("快速排序算法实现");
	}
}

/**
 * 环境类(Context)
 *
 * @author FM_南风
 * @date 2024/7/3
 */
public class Sorter {
	private SortingStrategy strategy;

	public Sorter(SortingStrategy strategy) {
		this.strategy = strategy;
	}

	public void setStrategy(SortingStrategy strategy) {
		this.strategy = strategy;
	}

	public void performSort(int[] data) {
		strategy.sort(data);
	}
}

/**
 * 应用
 *
 * @author FM_南风
 * @date 2024/7/3
 */
public class StrategyClient {
    public static void main(String[] args) {
       int[] data = {5, 1, 3, 6, 4, 2};

       Sorter sorter = new Sorter(new BubbleSortStrategy());
       sorter.performSort(data); // 使用冒泡排序策略

       sorter.setStrategy(new QuickSortStrategy());
       sorter.performSort(data); // 使用快速排序策略
    }
}

6、结果展示:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值