【Java设计模式】策略模式

(转载请注明出处:http://blog.csdn.net/buptgshengod

1.背景知识

   策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。比如每个人都要“交个人所得税”,但是“在美国交个人所得税”和“在中国交个人所得税”就有不同的算税方法。策略模式将不同的算法封装起来,根据客户端的需求,调用不同的对象使用不同的算法,节省了大量的if-else之类的代码量。

2.实现

本例由三种算法组成,算法一是将数字乘以1,算法二是乘以2,算法三是乘以3。客户端调用第二种算法。
Calculate.java -三种算法的接口
public interface Calculate {
/*
 * 算法接口,返回具体的算法
 */
	public int calnumber(int number);
	
}

FirstCalculate.java-第一种算法,其余两种算法略
public class FirstCalculate implements Calculate {

	@Override
	public int calnumber(int number) {
		// TODO Auto-generated method stub
		System.out.println("算法一");
		return number;
	}

}

Context.java-设定算法的使用环境
public class Context {
   Calculate cal;
/*
 * 构造函数,设定使用的算法对象
 */
	public Context(Calculate cal){
		this.cal=cal;
	}
/*
 * 将数据传入对应算法
 */
	public int SetNumber(int number){
		return cal.calnumber(number);
	}
}

Client.java-入口函数
public class Client {
	public static void main(String[] args) {  
       
		Calculate cal=new SecondCalculate();
		Context con=new Context(cal);
		int result=con.SetNumber(300);
		System.out.println(result);
    }  	
}

结果

3.例子源代码

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值