策略模式

本文深入解析策略模式,一种定义算法族并使它们可互换的设计模式。通过策略模式,可以实现算法的自由切换,避免多重条件判断,提高代码的扩展性和维护性。文章详细介绍了策略模式的定义、优点、缺点及其实现方式。

策略模式定义

也叫政策模式,定义一组算法,将每个算法都封装起来,并使它们之间可以互换。
策列模式使用的是面向对象的继承和多态机制。

优点
  • 算法自由切换
  • 避免使用多重条件判断
  • 扩展性良好
缺点
  • 策略类数量增多
  • 所有策略类都需要对外暴露

策略模式类图

在这里插入图片描述

策略模式角色

  • Context封装角色
  • Strategy抽象策略角色
  • ConcrecteStrategy具体策略角色

具体示例

抽象的策略角色

public interface IStrategy{
	public void doSomething();
}

具体策略角色
public class ConcreteStrategyA implements IStrategy{
	public void doSomething(){
		//to do
	}
}
public class ConcreteStrategyB implements IStrategy{
	public void doSomething(){
		//to do
	}
}
public class ConcreteStrategyC implements IStrategy{
	public void doSomething(){
		//to do
	}
}
封装角色
public class Context{
	private IStrategy strategy = null;
	public Context(IStrategy strategy){
		this.strategy = strategy;
	}
	//封装后的策略方法
	public void doSomething(){
		this.strategy.doSomething();
	}
}
上层模块
public class Client{
	public static void main(string[] args){
		//声明具体策略
		IStrategy strategy = new ConcreteStrategyA();
		//声明上下文对象
		Context context = new Context(strategy);
		//执行封装后的方法
		context.doSomething();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值