综合测试题:品尝饮料
一、要求
1、建立一个Java抽象类Drink
a)声明一个抽象方法taste(),该方法负责输出饮料的味道;
b)饮料类型(Coffee(咖啡),Beer(啤酒),Milk(牛奶)):
c)声明静态方法getDrink(String drinkType),根据传入的饮料英文名称创建 不同的饮料对象,并返回该对象。
2、建立Drink的具体子类:
a)分别建立Drink的子类:Coffee(咖啡),Beer(啤酒),Milk(牛奶);
b)实现taste()方法,要求在控制台打印各自的味道特征。
4、建立Test测试类,测试以上内容的正确性
a)编写main方法,通过命令行传参的方式传入某种饮料的类型。
b)在main方法中,调用Drink类的getDrink方法,获得相应的饮料对象。然后调用该饮料对象的taste()方法,输出该饮料的味道。
5、编译程序,并运行。
a)如果当参数为Coffee时,结果为:咖啡:苦
b)如果没有该种饮料,结果为:对不起!没有您输入的饮料类型。
给你写了:
首先是一个Drink接口:
public interface Drink {
void taste();
}
接着是三个子类
public class Coffee implements Drink{
@Override
public void taste() {
System.out.println("咖啡:苦");
}
}
public class Beer implements Drink{
@Override
public void taste() {
System.out.println("啤酒:略微苦涩");
}
}
public class Milk implements Drink {
@Override
public void taste() {
System.out.println("牛奶:微甜");
}
}
然后是Drink工厂类,通过这个类中的方法根据传入参数获取不同的饮料类型
public class DrinkFactory {
public static Drink getDrink(String drinkType){
if (drinkType==null){
return null;
}
if(drinkType.equalsIgnoreCase("Coffee")){
return new Coffee();
}else if(drinkType.equalsIgnoreCase("Beer")){
return new Beer();
}else if(drinkType.equalsIgnoreCase("Milk")){
return new Milk();
}
return null;
}
}
最后测试类:
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//命令行输入参数
System.out.println("请输入饮料类型:");
Scanner scanner = new Scanner(System.in);
String next = scanner.next();
Drink drink = DrinkFactory.getDrink(next);
if(drink==null){
System.out.println("对不起!没有您输入的饮料类型。");
}else {
drink.taste();
}
}
}
打完收工
这个问题应该使用最简单的工厂模式去求解。