更新时间: 试题数量: 购买人数: 提供作者:

有效期: 个月

章节介绍: 共有个章节

收藏
搜索
题库预览
用模板方法模式实现“制作饮料”设计程序。制作饮料的步骤,烧水和把饮品倒入杯子的流程是固定的,所以在抽象类中就可以实现;但是酿造和加调味品的步骤因饮料不同处理方法也不同,必须在其具体子类中实现。下图所示是“制作饮料”步骤的结构图,请根据结构图补充代码。 package template; public class MainClass { public static void main(String[] args) { // 做茶 System.out.println("******做茶******"); MakeBeverage tea = new Tea(); tea.prepareRecipe(); // 做咖啡 System.out.println("******做咖啡******"); MakeBeverage coffee = new Coffee(); coffee.prepareRecipe(); } } abstract class MakeBeverage { // 准备食谱(防止子类覆盖这个方法) final void prepareRecipe() { /** 第一步:把水煮沸 */ ______ boilWater(); /** 第二步:用沸水浸泡茶叶/咖啡 */ ______ brew(); /** 第三步:把饮品倒入杯子 */ ______ pourInCup(); /** 第四步:加调味品 */ ______ addCondiments(); } // 煮沸水(固定步骤) void boilWater() { System.out.println("把水煮沸到100℃"); } // 酿造(抽象方法,子类实现) abstract void brew(); // 倒入杯子(固定步骤) void pourInCup() { System.out.println("把饮品倒入杯子"); } // 加调味品(抽象方法,子类实现) abstract void addCondiments(); } class Tea extends MakeBeverage { // 酿造方法(茶的实现) void brew() { System.out.println("用沸水浸泡茶叶5分钟"); } // 加调味品(茶的实现) void addCondiments() { System.out.println("加蜂蜜和柠檬"); } } class Coffee extends MakeBeverage { // 酿造方法(咖啡的实现) void brew() { System.out.println("用沸水冲泡咖啡粉3分钟"); } // 加调味品(咖啡的实现) void addCondiments() { System.out.println("加牛奶和糖"); } }
用模板方法模式实现“制作饮料”设计程序。制作饮料的步骤,烧水和把饮品倒入杯子的流程是固定的,所以在抽象类中就可以实现;但是酿造和加调味品的步骤因饮料不同处理方法也不同,必须在其具体子类中实现。下图所示是“制作饮料”步骤的结构图,请根据结构图补充完整代码。 package template; public class MainClass { public static void main(String[] args) { // 做茶 System.out.println("******做茶******"); MakeBeverage tea = new Tea(); tea.prepareRecipe(); // 做咖啡 System.out.println("******做咖啡******"); MakeBeverage coffee = new Coffee(); coffee.prepareRecipe(); } } abstract class MakeBeverage { // 准备食谱(防止子类覆盖这个方法) final void prepareRecipe() { /** 第一步:把水煮沸 */ ______ boilWater(); /** 第二步:酿造饮品 */ ______ brew(); /** 第三步:把饮品倒入杯子中 */ ______ pourInCup(); /** 第四步:往饮品中增加调味品 */ ______ addCondiments(); } // 酿造 ______ void brew(); // 往饮品中增加调味品 ______ void addCondiments(); protected void boilWater() { System.out.println("把水煮沸"); } private void pourInCup() { System.out.println("把饮品倒入杯子中"); } } class Tea extends MakeBeverage { @Override protected void brew() { System.out.println("用沸水浸泡茶叶"); } @Override protected void addCondiments() { System.out.println("往茶叶中添加柠檬"); } } class Coffee extends MakeBeverage { @Override protected void brew() { System.out.println("用沸水冲泡咖啡"); } @Override protected void addCondiments() { System.out.println("往咖啡中添加糖和牛奶"); } }
用观察者模式实现“红绿灯”设计程序。“红灯停,绿灯行”是我们每个人都要遵守的交通规则。当交通信号灯发生变化时,相当于通知所有车辆和行人应当按照交通信号灯通行,该功能可以用观察者模式实现。类图如下,请根据类图补充完整代码。 package observer; import java.util.ArrayList; import java.util.List; abstract class Light { protected List<Vehicle> vehicles = new ArrayList<Vehicle>(); public void add(Vehicle vehicle) { vehicles.add(vehicle); } public void remove(Vehicle vehicle) { vehicles.remove(vehicle); } abstract void lightOn(); } class RedLight extends Light { void lightOn() { System.out.println("红灯亮了!"); System.out.println("--------------"); for(Vehicle v: vehicles) { ______ v.stop(); } } } class GreenLight extends Light { void lightOn() { System.out.println("绿灯亮了!"); System.out.println("--------------"); for(Vehicle v: vehicles) { ______ v.run(); } } } interface Vehicle { void stop(); void run(); } class Car implements Vehicle { public void stop() { System.out.println("小轿车停下来了..."); } public void run() { System.out.println("小轿车起步..."); } } class Bus implements Vehicle { public void stop() { System.out.println("公交车停下来了..."); } public void run() { System.out.println("公交车起步..."); } } public class MainClass { public static void main(String[] args) { // 1.创建目标: 红灯 Light red = new RedLight(); // 2.向目标(红灯)加入观察者:小轿车和公交车 Vehicle car = new Car(); Vehicle bus = new Bus(); red.add(car); red.add(bus); // 3.目标(红灯)状态发生改变:红灯亮了 red.lightOn(); // 1.创建目标: 绿灯 Light green = new GreenLight(); // 2.向目标(绿灯)加入观察者:小轿车和公交车 green.add(car); green.add(bus); // 3.目标(绿灯)状态发生改变:绿灯亮了 green.lightOn(); } }