这个题大多数初学者应该都会遇见:
定义一个接口MediaPlayer,表示家庭影院的一个设备。MediaPlayer 中包含play(),stop(), open()三个方法,分别表示播放、停止和开仓功能。 MediaPlayer 有三个实现类,分别为:DVDPlayer,表示DVD 播放器;CDPlayer,表示CD 播放器;TapePlayer,表示录音机(播放磁带)。类图如下:
创建一个遥控器Controller 类。该遥控器有三个控制通道,可以分别控制三个设备。部分代码如下:
class Controller {
private MediaPlayer[] players;
public Controller() {
// 构造函数中初始化players 数组
}
// 对相应的设备调用play 方法
public void play(int i) {
players[i].play();
}
}
要求:
1) 完成MediaPlayer 接口及其子类的代码。
2) 把Controller 补充完整,完善其构造函数,并为其增加stop(int i)和open(int i)方法 。
代码:
接口:
package com.xiaobai;
//接口,媒体播放机
public interface MediaPlayer {
// 播放
void play();
// 停止
void stop();
// 开仓
void open();
}
DVDPlayer类:
package com.xiaobai;
//DVD播放机
public class DVDPlayer implements MediaPlayer {
@Override
public void play() {
System.out.println("播放DVD");
}
@Override
public void stop() {
System.out.println("停止播放DVD");
}
@Override
public void open() {
System.out.println("打开DVD仓");
}
}
CDPlayer类:
package com.xiaobai;
//CD播放机
public class CDPlayer implements MediaPlayer {
@Override
public void play() {
System.out.println("播放CD");
}
@Override
public void stop() {
System.out.println("停止播放CD");
}
@Override
public void open() {
System.out.println("弹出CD仓");
}
}
TapePlayer类:
package com.xiaobai;
//录音机
public class TapePlayer implements MediaPlayer {
@Override
public void play() {
System.out.println("播放磁带");
}
@Override
public void stop() {
System.out.println("停止播放磁带");
}
@Override
public void open() {
System.out.println("弹出磁带仓");
}
}
上面其实都好写,这一步比较难一点,需要用到封装返回播放器类型,数组存储对象
Controller类:
package com.xiaobai;
//遥控器
public class Controller {
// 保存成员
private MediaPlayer[] players;
public MediaPlayer[] getPlayers() {
return players;
}
public void setPlayers(MediaPlayer[] players) {
this.players = players;
}
public Controller() {
// 构造函数中初始化players 数组
// mp中保存三个播放器
MediaPlayer[] mp = new MediaPlayer[3];
mp[0] = new DVDPlayer();
mp[1] = new CDPlayer();
mp[2] = new TapePlayer();
setPlayers(mp);
}
// 对相应的设备调用play 方法
public void play(int i) {
getPlayers()[i].play();
}
public void stop(int i) {
getPlayers()[i].stop();
}
public void open(int i) {
getPlayers()[i].open();
}
}
测试:
package com.xiaobai;
//测试媒体播放机
public class TestMedPla {
public static void main(String[] args) {
Controller c = new Controller();
c.play(0);
c.stop(0);
c.open(0);
System.out.println("============");
c.play(1);
c.stop(1);
c.open(1);
System.out.println("============");
c.play(2);
c.stop(2);
c.open(2);
}
}
测试结果:
播放DVD
停止播放DVD
打开DVD仓
============
播放CD
停止播放CD
弹出CD仓
============
播放磁带
停止播放磁带
弹出磁带仓