阅读下列说明和Java代码,将应填入(n)________处的字句写在答题纸的对应栏内。 【说明】 某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(St

admin2021-03-13  17

问题 阅读下列说明和Java代码,将应填入(n)________处的字句写在答题纸的对应栏内。
【说明】
    某软件公司欲开发一款汽车竞速类游戏,需要模拟长轮胎和短轮胎急刹车时在路面上留下的不同痕迹,并考虑后续能模拟更多种轮胎急刹车时的痕迹。现采用策略(Strategy)设计模式来实现该需求,所设计的类图如图5-1所示。

【Java代码】
    import Java.util.*;
    interface BrakeBehavior{
       public (1)________;
       /*其余代码省略*/
    };
    class LongWheelBrake implements BrakeBehavior  {
       public void stop(){System.out.println("模拟长轮胎刹车痕迹!");}
       /*其余代码省略*/
    };
    Class ShortWheeiBrake implements BrakeBehavior  {
       public void stop(){System.out.println("模拟短轮胎刹车痕迹!");}
       /*其余代码省略*/
    };
    abstract class Car{
       protected  (2)________  wheel;
       public void brake(){ (3)________;)
       /*其余代码省略*/
    };
Class ShortWheelCar extends Car  {
    public ShortWheelCar(BrakeBehavior behavior){
         (4)________
       }
        /*其余代码省略*/
    };
    Class StrategyTest{
     public static void main(String[]args){
       BrakeBehavior brake=new ShortWheeiBrake();
       ShortWheelCar carl=new ShortWheelCar(brake);
       carl.(5)________;
      }
    }

选项

答案(1)void stop() (2)BrakeBehavior (3)wheel.stop() (4)wheel=behavior (5)brake()

解析 本题考查设计模式中策略(Strategy)模式的基本概念和应用。
策略模式的意图是,定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化。策略模式的结构图如图5-2所示。

其中:
Strategy(策略)定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。
ConcreteStrategy(具体策略)以Strategy接口实现某具体算法。
Context(上下文)用一个ConcreteStrategy对象来配置;维护一个对Strategy对象的引用;可定义一个接口来让Strategy访问它的数据。
策略模式适用于:
许多相关的类仅仅是行为有异。“策略”提供了一种用多个行为中的一个行为来配置一个类的方法。
需要使用一个算法的不同变体。例如,定义一些反映不同空间的空间/时间权衡的算法。当这些变体实现为一个算法的类层次时,可以使用策略模式。
算法使用客户不应该知道的数据。可使用策略模式以避免暴露复杂的、与算法相关的数据结构。
一个类定义了多种行为,并且这些行为在这个类的操作中以多个条件语句的形式出现,将相关的条件分支移入它们各自的Strategy类中,以代替这些条件语句。
本题中的类BrakeBehavior对应于图5-2中的Strategy,类LongWheelBrake和ShortWheelBrake则是具体的策略子类,每个子类以Strategy提供的接口实现某具体算法。
第(1)空需要填写的就是接口BrakeBehavior中所定义的方法,这一空的答案可以从BrakeBehavior的子类中得出。因此第(1)空应填入void stop()。
第(2)~(3)空在类Car。中。类car对应于图5-2中的类Context,其作用是:用一个ConcreteStrategy对象来配置,维护一个对Strategy对象的引用,定义一个接口来让Strategy访问它的数据。第(2)空用于定义和维护对Strategy对象的引用,这里需要给出其类型,因此第(2)空应填入BrakeBehavior。第(3)空要求给出方法brake的实现,这里需要调用策略类所提供的的策略,因此第(3)空应填入wheel.stop()。
第(4)空是在为Cat的子类设置ConcreteStrategy对象,因此第(4)空应填入wheel=behavior。
第(5)空考查的是对策略模式的使用,这里需要调用Car中所定义的接口brake,因此第(5)空应填入brake()。
转载请注明原文地址:https://kaotiyun.com/show/OsxZ777K
0

相关试题推荐
最新回复(0)