装饰器类型
试题六(装饰器类型)
阅读下列说明和java代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某发票(lnvoice)由抬头(Head)部分、正文部分和脚注(Foot)部分构成。现采用装饰(Decorator)模式实现打印发票的功能,得到如图6-1所示的类图。
网络异常,图片无法展示
|
【java代码】
class invoice{ public void printInvoice(){ System.out.println ( "This is the content of the invoice!"); } } class Decorator extends Invoice { protected Invoice ticket; public Decorator(lnvoice t){ ticket = t; } public void printInvoice(){ if(ticket != null) (1)ticket.printInvoice() ; } } class HeadDecorator extends Decorator{ public HeadDecorator(lnvoice t){ super(t); } public void printInvoice (){ Systent.out.println( "This is the header of the invoice! "); (2) ticket.printInvoice(); } } class FootDecorator extends Decorator { public FootDecorator(Invoice t){ super(t); } public void printlnvoice(){ ( 3) ticket.printInvoice(); Systent.out.println( "This is the footnote of the invoice! "); } } Class test { public static void main(String[] args){ Invoice t =new Invioce(); Invoice ticket; ticket= (4) new FootDecorator(new HeadDecorator(t)); ticket.printInvoice(); Systent.out.println(“------------------“); ticket= (5) new FootDecorator(new HeadDecorator(new Decorator(null))); ticket.printInvoice(); } } 复制代码
程序的输出结果为:
This is the header of the invoice!
This is the content of the invoice!
This is the footnote of the invoice!
This is the header of the invoice!
This is the footnote of the invoice!
试题六(装饰器)
某咖啡店售卖咖啡时,可以根据顾客的要求在其中加入各种配料,咖啡店会根据所加入的配料来计算费用。咖啡店所供应的咖啡及配料的种类和价格如下表所示。
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
网络异常,图片无法展示
|
1. Abstract 2. String getDescription() 3. Abstract int cost(). 4. Beverage beverage. 5. beverage. 6. Beverage 复制代码
生成器类型
试题六(生成器类型)
阅读下列说明和 Java 代码,将应填入 (n) 处的字句写在答题纸的对应栏内。
【说明】
某快餐厅主要制作并出售儿童套餐,一般包括主餐(各类比萨)、饮料和玩具,其餐品种类可能不同,但其制作过程相同。前台服务员(Waiter) 调度厨师制作套餐。现采用生成器 (Builder) 模式实现制作过程,得到如图 6-1 所示的类图。
网络异常,图片无法展示
|
【Java 代码】
class Pizza { private String parts; public void setParts(String parts) { this.parts = parts;} public String toString() { return this.parts; } } abstract class PizzaBuilder { protected Pizza pizza; public Pizza getPizza() { return pizza; } public void createNewPizza() { pizza = new Pizza(); } public (1) ; } class HawaiianPizzaBuilder extends PizzaBuilder { public void buildParts() { pizza.setParts("cross + mild +ham&pineapp1e”}; } class SpicyPizzaBuilder extends PizzaBuilder { public void buildParts() { pizza.setParts("pan baked + hot +pepperoni&salami"); } } class Waiter { private PizzaBuilder pizzaBuilder; public void setPizzaBuilder(PizzaBuilder pizzaBuilder) { /* 设置构建器*/ (2) ; } public Pizza getPizza(){ return pizzaBuilder.getPizza(); } public void construct() { /*构建*/ pizzaBuilder.createNewPizza(); (3) ; } } Class FastFoodOrdering { public static viod mainSting[]args) { Waiter waiter = new Waiter(); PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder(); (4) ; (5) ; System.out.println("pizza: " + waiter.getPizza()); } } 复制代码
程序的输出结果为:
Pizza:cross + mild + ham&pineapple
网络异常,图片无法展示
|