根据模拟移动存储设备的读写,即计算机与U盘、MP3、移动硬盘等设备进行数据交换。要求计算机能同这三种设备进行数据交换,并且以后可能会有新的第三方的移动存储设备,所以计算机必须有扩展性,能与目前未知而以后可能会出现的存储设备进行数据交换。各个存储设备间读、写的实现方法不同,U盘和移动硬盘只有Read和Write这两个方法,MP3Player还有一个PlayMusic方法,用java实现,请你给出实验小结
时间: 2024-02-17 09:04:41 浏览: 85
经过对存储设备的分析,我们可以将其抽象为一个接口StorageDevice,其包含读数据和写数据两个方法,如下所示:
```java
public interface StorageDevice {
void read();
void write();
}
```
然后我们可以实现不同的存储设备类,如U盘、MP3Player和移动硬盘等,这些类都需要实现StorageDevice接口中的读写方法,其中MP3Player还需要实现播放音乐的方法。下面是这些类的定义:
```java
public class USB implements StorageDevice {
@Override
public void read() {
System.out.println("USB is reading data ...");
}
@Override
public void write() {
System.out.println("USB is writing data ...");
}
}
public class MP3Player implements StorageDevice {
@Override
public void read() {
System.out.println("MP3Player is reading data ...");
}
@Override
public void write() {
System.out.println("MP3Player is writing data ...");
}
public void playMusic() {
System.out.println("MP3Player is playing music ...");
}
}
public class MobileHardDisk implements StorageDevice {
@Override
public void read() {
System.out.println("MobileHardDisk is reading data ...");
}
@Override
public void write() {
System.out.println("MobileHardDisk is writing data ...");
}
}
```
在实现完这些设备类之后,我们可以编写一个Computer类作为计算机,这个类可以与不同的设备进行交互,如下所示:
```java
public class Computer {
public void exchangeData(StorageDevice device) {
device.read();
device.write();
}
}
```
在这个Computer类中,我们定义了一个exchangeData方法,这个方法可以接受任何实现了StorageDevice接口的设备作为参数,然后调用这个设备的读写方法进行数据交换。
下面是一段测试代码,展示了如何使用这些设备与计算机进行数据交换:
```java
public class Main {
public static void main(String[] args) {
Computer computer = new Computer();
USB usb = new USB();
MP3Player mp3Player = new MP3Player();
MobileHardDisk mobileHardDisk = new MobileHardDisk();
// 与U盘进行数据交换
computer.exchangeData(usb);
// 与MP3Player进行数据交换
computer.exchangeData(mp3Player);
// 与移动硬盘进行数据交换
computer.exchangeData(mobileHardDisk);
}
}
```
通过这样的设计,我们可以方便地扩展新的存储设备,并且能够与不同类型的设备进行数据交换,提高了代码的复用性和可扩展性。
阅读全文