设计模式--策略模式

在软件开发中可能遇到过这种情况,一个类中需要写多个算法或复杂逻辑,它们放在类的方法中,通过if..else和switch..case 来区分是否调用哪个方法,这种我们称为硬编程,这样会导致整个类臃肿,修改添加都易出错。于是策略模式就是为了避免这种情况,将算法和复杂的逻辑独立封装起来。

UML图:

策略模式的简单实现:


public interface StrategyModelListener {
		public String calculate();
}
public class StrategyModelA implements StrategyModelListener {

	@Override
	public String calculate() {
		// TODO Auto-generated method stub
		System.out.println("这个方法写复杂的算法过程A");
		return "这个方法写复杂的算法过程A";
	}

}
public class StrategyModelMain {

	  StrategyModelListener strategyModelListener;

	public void setStrategyModelListener(StrategyModelListener strategyModelListener) {
		this.strategyModelListener=strategyModelListener;
	}

    public String calculate(){
		return strategyModelListener.calculate();
	}

	public static void main(String[] arg) {

		StrategyModelMain strategyModelMain=new StrategyModelMain();
		if (false) {
			strategyModelMain.setStrategyModelListener(new StrategyModelA());
			strategyModelMain.calculate();
		} else {
			strategyModelMain.setStrategyModelListener(new StrategyModelB());
			strategyModelMain.calculate();
		}

	}

注:其中 StrategyModelB和StrategyModelA类似就不粘贴了。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值