java设计模式之策略模式

策略模式重要概念:

策略模式把对象本身和运算规则区分开来,其功能非常强大,因为这个设计模式本身的核心思想就是面向对象编程的多形性的思想。


eg:

准备吃饭,可以有多种姿势,坐着吃,站着吃,躺着吃,

那总体的行为就是"吃的姿势"的改变。

现在就可以有个吃姿势的接口:

public interface IEatingPosture {
	void eatPostrue();
}


接下来是具体的实现吃的姿势:

站着吃:

public class StandEatImpl implements IEatingPosture {
	@Override
	public void eatPostrue() {
		System.out.println("我要站着吃");
	}
}


坐着吃:

public class SitEatImpl implements IEatingPosture {
	@Override
	public void eatPostrue() {
		System.out.println("我要坐着吃");
	}
}


躺着吃:

public class LieEatImpl implements IEatingPosture {
	@Override
	public void eatPostrue() {
		System.out.println("我要躺着吃");
	}
}


总体来说,前面这些就是运算的规则。


吃饭本身,这就是对象。

public class EatContext {
	private IEatingPosture ieatingPostrue;
	public EatContext(IEatingPosture ieatingPostrue){
		this.ieatingPostrue=ieatingPostrue;
	}
	void eatPostrue(){
		this.ieatingPostrue.eatPostrue();
	}
}


准备开吃。

测试可供三种吃饭的姿势:想哪种姿势吃饭就哪种姿势吃饭

public class TestEatingPostrue {
	public static void main(String[] args) {
		EatContext context;
		context=new EatContext(new StandEatImpl());
		context.eatPostrue();
		context=new EatContext(new SitEatImpl());
		context.eatPostrue();
		context=new EatContext(new LieEatImpl());
		context.eatPostrue();
	}
}




你可能感兴趣的:(java设计模式之策略模式)