设计模式读后感之策略模式

策略模式

定义是:定义算法家族,分别封装起来,让他们之间可以相互替代,此模式让算法的变化,可以不会影响使用算法的客户。

uml图如下:



 
 这是抽象策略类

package category;

public abstract class Stragery {

	public abstract void AlgorithmInterface();
}

 具体实现的三个策略

public class ConcreteStrategyA extends Stragery {

	@Override
	public void AlgorithmInterface() {
		// TODO Auto-generated method stub
		
		System.out.println("Methond A implements");

	}

}

public class ConcreteStrategyB extends Stragery {

	@Override
	public void AlgorithmInterface() {
		// TODO Auto-generated method stub
		
		System.out.println("Methond B implements");

	}

}

public class ConcreteStrategyC extends Stragery {

	@Override
	public void AlgorithmInterface() {
		// TODO Auto-generated method stub
		
		System.out.println("Methond C implements");

	}

}

 
 将策略封装到一个Context类中,然后就能在这个类中根据传入的策略不同而实现不同的策略

 

public class Context {

	private Stragery stragery;

	public  Context(Stragery stragery) {
		this.stragery = stragery;
	}

	public void ContextInterface() {
		stragery.AlgorithmInterface();
	}

}

 main方法检验

public class Main {

	public static void main(String[] args) {
		// TODO Auto-generated method stub

		Context context;

		context = new Context(new ConcreteStrategyA());
		context.ContextInterface();
		context = new Context(new ConcreteStrategyB());
		context.ContextInterface();
		context = new Context(new ConcreteStrategyC());
		context.ContextInterface();
	}

}

 在实践中,如果遇到了不同时间,用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值