现需要设计一个程序来读取并显示多种不同类型的图片格式,针对每一种图片格式都设计一个图片读取器(ImageReader,设计为接口),如GIF图片读取器(GifReader)用于读取GIF格式的图片,JPEG图片读取器(JpgReader)用于读取JPEG格式的图片。要求程序可以在不同的操作系统显示图片,例如:Wdindows,Android,Linux等。请用桥接模式设计程序。要求绘制类图并用java编程实现(提供不同的参数调用相应的上班方法)。
时间: 2023-05-29 08:06:26 浏览: 214
类图如下:
![image](https://user-images.githubusercontent.com/87290316/130308454-12aee8c3-3f3d-4a09-a1d3-8e2d1a9e7a47.png)
代码实现如下:
```java
//抽象化角色:图片读取器
interface ImageReader {
void readImage(String fileName);
}
//扩展抽象化角色:GIF图片读取器
class GifReader implements ImageReader {
public void readImage(String fileName) {
System.out.println("读取GIF格式的图片:" + fileName);
}
}
//扩展抽象化角色:JPEG图片读取器
class JpgReader implements ImageReader {
public void readImage(String fileName) {
System.out.println("读取JPEG格式的图片:" + fileName);
}
}
//实现化角色:操作系统
interface OS {
void displayImage(ImageReader reader, String fileName);
}
//具体实现化角色:Windows操作系统
class Windows implements OS {
public void displayImage(ImageReader reader, String fileName) {
reader.readImage(fileName);
System.out.println("在Windows操作系统中显示图片:" + fileName);
}
}
//具体实现化角色:Android操作系统
class Android implements OS {
public void displayImage(ImageReader reader, String fileName) {
reader.readImage(fileName);
System.out.println("在Android操作系统中显示图片:" + fileName);
}
}
//具体实现化角色:Linux操作系统
class Linux implements OS {
public void displayImage(ImageReader reader, String fileName) {
reader.readImage(fileName);
System.out.println("在Linux操作系统中显示图片:" + fileName);
}
}
//客户端
public class Client {
public static void main(String[] args) {
OS windows = new Windows();
OS android = new Android();
OS linux = new Linux();
ImageReader gifReader = new GifReader();
ImageReader jpgReader = new JpgReader();
windows.displayImage(gifReader, "test.gif");
android.displayImage(gifReader, "test.gif");
linux.displayImage(gifReader, "test.gif");
windows.displayImage(jpgReader, "test.jpg");
android.displayImage(jpgReader, "test.jpg");
linux.displayImage(jpgReader, "test.jpg");
}
}
```
运行结果如下:
```
读取GIF格式的图片:test.gif
在Windows操作系统中显示图片:test.gif
读取GIF格式的图片:test.gif
在Android操作系统中显示图片:test.gif
读取GIF格式的图片:test.gif
在Linux操作系统中显示图片:test.gif
读取JPEG格式的图片:test.jpg
在Windows操作系统中显示图片:test.jpg
读取JPEG格式的图片:test.jpg
在Android操作系统中显示图片:test.jpg
读取JPEG格式的图片:test.jpg
在Linux操作系统中显示图片:test.jpg
```