某公司欲开发一款儿童玩具汽车,为了更好地吸引小朋友的注意力,该玩具汽车在移动过程中伴随着灯光闪烁和声音提示,在该公司以往的产品中已经实现了控制灯光闪烁和声音提示的程序,为了重用先前的代码并且使得汽车控制软件具有更好的灵活性和扩展性,使用设配器模式设计该系统,所得类图如下图所示。 在上图中,CarController类是汽车控制器,它包括三个方法用于控制汽车的行为,其中move()用于控制汽车的移动,sound()用于控制汽车的声音,light()用于控制汽车灯光的闪烁,sound()和light()是抽象方法。Sound类是抽象声音类,其方法phonate()用于实现声音提示,在其子类ConcreteSound中实现了该方法;Lamp类是灯光类,其方法twinkle()用于实现灯光闪烁,在其子类ConcreteLamp中实现了该方法。CarAdapter充当适配器,它通过分别调用Sound类的phonate()方法和Lamp类的twinkle()方法实现声音播放和灯光闪烁: Java代码如下: abstract class Sound //抽象声音类 { public abstract void phonate(); } class ConcreteSound extends Sound //具体声音类 { public void phonate() { System.out.println("声音播放:!");} } abstract class Lamp //抽象灯光类 { public abstract void twinkle(); } class ConcreteLamp extends Lamp //具体灯光类 { public void twinkle() { System.out.println("灯光闪烁");} } ______1_______CarController //汽车空间类 { public void move() { System.out.println("汽车移动!") } public abstract void sound(); public abstract void light(); } class CarAdapter_____2________ //汽车适配器 { private Sound sound; private Lamp lamp; public CarAdapter(Sound sound ,Lamp lamp) { ________3_____; _______4______; } public void sound() { _______5______; //声音播放 } public void light() { ______6_______; //灯光闪烁 } } class Client { public static void main(String arg[]) { Sound sound; Lamp lamp; CarController car; sound=new ConcreteSound(); lamp =new ConcreteLamp(); car=_______7_________; car.move(); car.sound(); car.light(); } } 在本例中,使用了____8______(填写类适配器或对象适配器)模式