策略模式

概念:

        策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。

下面用一个工厂模式和策略模式的对比进行说明策略模式

工厂模式:

public interface Operation {
	double GetResult(double a,double b);
}

public class AddOperation implements Operation {

	public double GetResult(double a, double b) {
		return a+b;
	}
}

public class SubOperation implements Operation {

	public double GetResult(double a, double b) {
		return a-b;
	}

}

public class factory {
	public static Operation creat(char c){
		Operation op = null;
		switch(c){
			case '+':
				op = new AddOperation();
				break;
			case '-':
				op = new subOperation();
				break;
			default:
				op = new AddOperation();
				break;
		}
		return op;
	}
}

public class Test {

	public static void main(String[] args) {
		Operation op = factory.creat('+');
		System.out.println(op.GetResult(1.1, 2.2));
		op = factory.creat('-');
		System.out.println(op.GetResult(1.1, 2.2));
	}
}
策略模式:

public interface Operation {
	double getResult(double a,double b);
}

public class AddOperation implements Operation {

	public double getResult(double a, double b) {
		return a+b;
	}
}

public class SubOperation implements Operation {

	public double getResult(double a, double b) {
		return a-b;
	}

}

public class Strategy {
	Operation op;
	
	public Strategy(Operation op){
		this.op = op;
	}
	
	public double getResult(double a,double b){
		return op.getResult(a, b);
	}
}

public class Test {

	public static void main(String[] args) {
		AddOperation addOp = new AddOperation();
		SubOperation subOp = new SubOperation();
		Strategy addStrategy = new Strategy(addOp);
		System.out.println(addStrategy.getResult(1.1, 2.2));
		Strategy subStrategy = new Strategy(subOp);
		System.out.println(subStrategy.getResult(1.1, 2.2));
	}
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值