`

设计模式之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

 

 

1
2
分享到:
评论

相关推荐

    JAVA设计模式chm文档

    设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计...

    Java设计模式之禅

    《Java设计模式之禅》是一本深入浅出讲解设计模式的书籍,书中不仅包含23种经典设计模式的案例,还详细介绍了设计模式背后的思想和原则,适合初学者以及对设计模式有一定了解的程序员阅读。本书旨在帮助读者理解如何...

    设计模式之美—学习笔记

    在这个“设计模式之美”的学习笔记中,我们将探讨一些主要的设计模式,以及它们在实际开发中的应用。 首先,我们从创建型模式开始。这类模式主要用于对象的创建,如单例模式(Singleton)、工厂模式(Factory ...

    设计模式文档 chm

    设计模式之Template 设计模式之Memento(备忘机制) 设计模式之Observer 设计模式之Chain of Responsibility(职责链) 设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计...

    java 23种设计模式及具体例子

    java 设计模式 java 设计模式是软件工程的基石,它们被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式可以让代码更容易被他人理解、保证代码可靠性、提高代码的重用性。 一、设计模式...

    24种设计模式以及混合设计模式

    如策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、命令模式(Command)、迭代器模式(Iterator)、访问者模式(Visitor)、备忘录模式(Memento)、状态模式(State)、职责链...

    各个版本的 设计模式 带例子

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的经验总结。这些模式在不同的编程语言中都有应用,而在这个压缩包中,我们重点关注的是与Java相关的设计模式。设计模式通常分为三大类:创建型...

    Head First 设计模式 (八) 模板方法模式(Template Method pattern) C++实现

    模板方法模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在C++这样的面向对象编程语言中。这种模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的...

    设计模式--模板方法模式java例子

    模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...

    设计模式例子和PPT

    在这个“设计模式例子和PPT”压缩包中,包含的内容主要是关于设计模式的基本原则、UML类图以及一些实际的应用示例。 设计模式分为三大类:创建型模式、结构型模式和行为型模式。每种模式都有其特定的目标和适用场景...

    设计模式例子文档,简单易学

    这份名为"设计模式例子文档,简单易学"的资源,显然是为了帮助开发者更直观、更快速地理解和应用设计模式。设计模式并非具体的代码或库,而是一种通用的解决方案模板,可以在不同的软件开发过程中复用,以提高代码的...

    c#设计模式源码例子

    本压缩包文件“c#设计模式源码例子”提供了一组C#实现的设计模式示例,通过分析这些源码,我们可以深入理解并掌握各种设计模式的精髓。 首先,我们来看看几种主要的设计模式类别:创建型、结构型和行为型模式。 1....

    GoF 23种设计模式的详解与应用

    详细介绍GoF设计模式以及应用... 创建模式:设计模式之Factory,设计模式之Prototype(原型),设计模式之Builder,设计模式之Singleton(单态)....行为模式:设计模式之Template,设计模式之Memento(备忘机制).................

    设计模式C++学习之模板方法模式(Template Method)

    模板方法模式(Template Method)是设计模式中行为型模式的一种,它定义了操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。这个模式在C++编程中有着...

    23种面向对象设计模式

    文档中的“23种设计模式学习笔记.doc”可能包含了对这23种模式的详细解释和实例,而“设计模式之我爱我家.doc”可能从一个更生活化的角度来阐述设计模式的概念。“软件23种设计模式,超级经典的.pdf”可能是对这些...

    研磨设计模式(完整带书签).part2.pdf

    《研磨设计模式》在内容上深入、技术上实用、和实际开发结合程度很高,书中大部分的示例程序都是从实际项目中简化而来,因此很多例子都可以直接拿到实际项目中使用。如果你想要深入透彻地理解和掌握设计模式,并期望...

    设计模式那点事

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、...Strategy)、模板方法模式(Template Method)和访问者模式(Visitor)...

    二十三种设计模式【PDF版】

    设计模式之 Template(模板方法) 实际上向你介绍了为什么要使用 Java 抽象类,该模式原理简单,使用很普遍. 设计模式之 Strategy(策略) 不同算法各自封装,用户端可随意挑选需要的算法. 设计模式之 Chain of ...

    设计模式可复用面向对象软件的基础 源码

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。"设计模式可复用面向对象软件的基础"这一主题强调了设计模式在创建可维护、可扩展的面向对象软件中的核心作用。源码实现则为我们...

    设计模式之模板方法(Template)

    模板方法设计模式是一种行为设计模式,它...模板方法设计模式是设计模式中的基础模式之一,理解并正确使用它可以提高软件的灵活性、可维护性和扩展性。在实际开发中,我们应该根据需求灵活运用,以达到最佳的设计效果。

Global site tag (gtag.js) - Google Analytics