设计模式之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.0300.0500.0350.0550.0750.0##########开始2##########300.0350.0500.0550.0750.0900.0##########开始3##########2年的一汽品牌中bus公共汽车野地0的价格为650.25比2年的大众品牌中car小汽车家居2的价格为607.5贵了42.75
?
?