Skip to content

pengMaster/strategyMode

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

策略模式

Latest Stable Version Build Status Min Sdk Version License

   开启旅程

案例:计算车费

思路: 我们提取一个公共Interface来计算费用三个不同类实现计费接口,再用一个公 共类管理三种不同车辆的计费功能

  • 三种车辆费用共同点为计算车费
  • 不同点为车辆类型不同
  • 公交车费
  • 出租车费
  • 小汽车费

1.公共计费接口

/**
 * 计算价格
 *
 * @author MtmWp
 */
public abstract interface IPrice {
	
	/**
	 * 返回计算后的价格
	 * @param path
	 * @return
	 */
	String countPrice(int path); 
	
}

2.公交车,出租车,小汽车各自计费类

/**
* 公交车计算价格
* 
* @author MtmWp
*
*/
public class BusCost implements IPrice {

   @Override
   public String countPrice(int path) {
   	return path*2+"";
   }

}
/**
* 出租车计算价格
* 
* @author MtmWp
*
*/
public class CarCost implements IPrice {

   @Override
   public String countPrice(int path) {
   	return path*2+5+"";
   	
   }
/**
* 小汽车计算价格
* 
* @author MtmWp
*
*/
public class TaxiCost implements IPrice {

  @Override
  public String countPrice(int path) {
  	return path*3+1+"";
  	
  }

3.统一管理车类型费用类

/**
* 统一管理车类型以及费用类
* 
* @author MtmWp
*
*/
public class CountCostManager {
  
  IPrice iPrice;
  
  /**
   * 设置车类型
   * 
   * @param price
   */
  public void setCostType(IPrice price){
  	iPrice = price;
  }
  
  /**
   * 计算价格
   * 
   * @param path
   * @return
   */
  public String countCost(int path){
  	return iPrice.countPrice(path);
  }

测试用例

  	//-----------------公交车费用------------------
  	CountCostManager mCountCostManager  = new CountCostManager();
  	mCountCostManager.setCostType(new BusCost());//设置车类型
  	String price = mCountCostManager.countCost(12);//根据路程算具体花销
  	System.err.println("公交车费用:"+price+"\n");
  	
  	//-----------------小汽车费用------------------
  	mCountCostManager.setCostType(new CarCost());//设置车类型
  	System.err.println("小汽车费用:"+mCountCostManager.countCost(12)+"\n");
  	
  	//-----------------出租车费用------------------
  	mCountCostManager.setCostType(new TaxiCost());//设置车类型
  	mCountCostManager.countCost(12);//根据路程算具体花销
  	System.err.println("出租车费用:"+mCountCostManager.countCost(12)+"\n");

输出:

公交车费用:24

小汽车费用:29

出租车费用:37

About

策略模式 案例:计算车费

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages