GOF23-策略模式

这篇博客探讨了策略模式在处理动态算法选择时的优势。通过定义一个策略接口和多个实现类,如公交、自行车和地铁,策略模式允许在运行时灵活地切换行为。在上下文中创建对象并调用相应方法,可以避免使用大量的if...else语句,提高代码的可维护性。策略模式与桥梁模式结构相似,但前者更专注于行为的动态变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

策略表示一个类的行为或者其算法可以在运行时发生改变,在多种算法相似的情况下,使用if…else会使得代码量比较庞大和难以维护。
举个例子:
今天天气很好,要出去玩,但是可以选择很多的交通工具,自行车,公交,地铁。
1、定义一个策略接口

public interface Strategy{
	void drive(String x , String y);
}

2、定义三个实际策略

public Class bus implements Strategy{
	public void drive(String x , String y){
		system.out.println("坐公交:"+x+"->"+y);
	}
}

public Class bike implements Strategy{
	public void drive(String x , String y){
		system.out.println("骑自行车:"+x+"->"+y);
	}
}

public Class subway implements Strategy{
	public void drive(String x , String y){
		system.out.println("坐地铁:"+x+"->"+y);
	}
}

3、定yi个使用策略的类

public class Context{
	private Strategy strategy;

	public Context(Strategy strategy){
		this.strategy = strategy	
	} 
	public void doo(String x , String y){
		strategy.drive(x ,y);
	}
}

4、测试

public static void main(String[] args){
	Context context = new Context(new Bus();)
	context.doo("A","B");
}

对比桥梁模式,其实他们的结构非常的相似。只是在定义使用策略类的时候加了一层抽象层,以下为画笔所呈现的不同模式的结构图

在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值