设计模式之Template(笔试题目汽车例子)

 carCommon抽象类

public abstract class carCommon {
	public abstract String getName();	//汽车名字
	public abstract String getBrand();	//汽车品牌
	public abstract float getPrice();	//汽车价格
	public abstract String getCarSort();//汽车类型
	
	public abstract float mathPrice(int year);	//汽车按年折旧率
}

busCar公共汽车的实现

public class busCar extends carCommon{
	private String name = null;		//汽车名字
	private float price;			//汽车品牌
	private String brand = null;		//汽车价格
	private String carSort = "bus公共汽车";	//汽车分类
	private float discount = 0.85f;		//汽车折旧率
	
	/*全部初始化值*/
	public busCar(String name,float price,String brand){
		this.name = name;
		this.price = price;
		this.brand = brand;
	}
	
	public String getBrand() {
		return brand;
	}

	public String getName() {
		return name;
	}
	
	public float getPrice(){
		return price;
	}
	
	public String getCarSort() {
		return carSort;
	}

	public float mathPrice(int year) {
		for(int i=0; i<year; i++){
			price = price*discount;
		}
		return price;
	}
}

 minCar的小汽车实现

public class minCar extends carCommon{
	private String name = null;		//汽车名字
	private float price;			//汽车品牌
	private String brand = null;		//汽车价格
	private String carSort = "car小汽车";	//汽车分类
	private float discount = 0.90f;		//汽车折旧率
	
	/*全部初始化值*/
	public minCar(String name,float price,String brand){
		this.name = name;
		this.price = price;
		this.brand = brand;
	}
	
	public String getBrand() {
		return brand;
	}

	public String getName() {
		return name;
	}
	
	public float getPrice(){
		return price;
	}
	
	public String getCarSort() {
		return carSort;
	}

	public float mathPrice(int year) {
		for(int i=0; i<year; i++){
			price = price*discount;
		}
		return price;
	}
	
}

最后是testCar的类

import java.util.ArrayList;


public class testCar {
	public static void main(String[] args){
		testCar testcar = new testCar();
		
		busCar a0 = new busCar("野地0",900,"一汽");
		busCar a1 = new busCar("野地1",300,"一汽");
		busCar a2 = new busCar("野地2",500,"一汽");
		
		
		minCar b0 = new minCar("家居0",350,"大众");
		minCar b1 = new minCar("家居1",550,"大众");
		minCar b2 = new minCar("家居2",750,"大众");
		
		ArrayList alist = new ArrayList();
		alist.add(a0);
		alist.add(a1);
		alist.add(a2);
		alist.add(b0);
		alist.add(b1);
		alist.add(b2);
		
		System.out.println("##########开始1##########");
		for(int i=0; i<alist.size(); i++){
			System.out.println(((carCommon)alist.get(i)).getPrice());
		}
		
		/**
		 * 根据价格排序
		 */
		Object mid;
		for(int i=0; i<alist.size(); i++){
			for(int j=0; j<alist.size(); j++){
				if(((carCommon)alist.get(i)).getPrice() < ((carCommon)alist.get(j)).getPrice()){
					mid = alist.get(i);
					alist.set(i, alist.get(j));
					alist.set(j, mid);
				}
			}
		}
		
		System.out.println("##########开始2##########");
		for(int i=0; i<alist.size(); i++){
			System.out.println(((carCommon)alist.get(i)).getPrice());
		}
		
		System.out.println("##########开始3##########");
		System.out.println(testcar.comparePrice(a0,2,b2,2));
		
	}
	
	/**
	 * 按年折旧后比较价格
	 * @param a1
	 * @param year1
	 * @param a2
	 * @param year2
	 * @return
	 */
	public String comparePrice(carCommon a1,int year1,carCommon a2,int year2){
		String returnStr = null;
		if(a1.mathPrice(year1) > a2.mathPrice(year2)){
			returnStr = year1 + "年的" + a1.getBrand() + "品牌中" + a1.getCarSort() + a1.getName() + "的价格为" +a1.getPrice()
				+ "比" + year2 + "年的" + a2.getBrand() + "品牌中" + a2.getCarSort() +  a2.getName() + "的价格为" +a2.getPrice() + "贵了" +(a1.getPrice()-a2.getPrice());
		} else {
			returnStr = year1 + "年的" + a1.getBrand() + "品牌中" + a1.getCarSort() + a1.getName() + "的价格为" +a1.getPrice()
				+ "比" + year2 + "年的" + a2.getBrand() + "品牌中" + a2.getCarSort() +  a2.getName() + "的价格为" +a2.getPrice() + "便宜了" +(a2.getPrice()-a1.getPrice());
		}
		return returnStr;
	}
}

测试结果:

##########开始1##########
900.0
300.0
500.0
350.0
550.0
750.0
##########开始2##########
300.0
350.0
500.0
550.0
750.0
900.0
##########开始3##########
2年的一汽品牌中bus公共汽车野地0的价格为650.25比2年的大众品牌中car小汽车家居2的价格为607.5贵了42.75

猜你喜欢

转载自ciding.iteye.com/blog/1096656