Strategy模式

package com.jaeson.javastudy.designpattern;

/**
 * 策略模式属于对象的行为模式。
 * 其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。
 * 策略模式使得算法可以在不影响到客户端的情况下发生变化。
 * 
 */
public class StrategyPattern {
	
	private ICalculator strategy;
	public StrategyPattern(ICalculator strategy) {
		this.strategy = strategy;
	}
	
	public int cal(int i, int j) {
		return this.strategy.calculate(i, j);
	}
	public void setStrategy(ICalculator strategy) {
		this.strategy = strategy;
	}
	
	public static void main(String[] args) {
		
		StrategyPattern st = new StrategyPattern(new Plus());
		System.out.println(st.cal(1, 10));
		st.setStrategy(new Minus());
		System.out.println(st.cal(1, 10));
		st.setStrategy(new Multi());
		System.out.println(st.cal(1, 10));
		st.setStrategy(new Devide());
		System.out.println(st.cal(1, 10));
	}
}
class Plus implements ICalculator {
	@Override public int calculate(int i, int j) {
		return i + j;
	}
}
class Minus implements ICalculator {
	@Override public int calculate(int i, int j) {
		return i - j;
	}
}
class Multi implements ICalculator {
	@Override public int calculate(int i, int j) {
		return i * j;
	}
}
class Devide implements ICalculator {
	@Override public int calculate(int i, int j) {
		return i / j;
	}
}

猜你喜欢

转载自jaesonchen.iteye.com/blog/2286901