门户站点是什么,长沙官网网站推广优化,wordpress 标签搜索,中国网站制作公司题目——桥接模式#xff08;抽象调用实现部分#xff09; package org.example.桥接模式;/*** 桥接模式的核心思想是将抽象部分与它的实现部分分离#xff0c;使它们可以独立变化#xff0c;就是说你在实现部分#xff1a;WinImp、LinuxImp基础上还能加上RedHatImp#…题目——桥接模式抽象调用实现部分 package org.example.桥接模式;/*** 桥接模式的核心思想是将抽象部分与它的实现部分分离使它们可以独立变化就是说你在实现部分WinImp、LinuxImp基础上还能加上RedHatImp抽象部分JpegImage、BmpImage、GifImage的基础上还能加上JpgImage。* Image 是抽象部分Implementor 是实现部分。这是因为 Image 类拥有对 Implementor 的引用并通过这个引用调用 Implementor 的方法。在桥接模式中抽象部分Image依赖于实现部分Implementor。* Image 类的 parseFile 方法这个方法通过调用 imp.doPaint(new Matrix()) 完成图像文件的解析操作。关键在于它使用了一个 Implementor 对象 imp但具体的实现是由 Image 的子类来决定的。** author lst* date 2023年12月07日 14:30*/
class Matrix {
}abstract class Implementor {(1)
}class WinImp extends Implementor {public void doPaint(Matrix m) {}
}class LinuxImp extends Implementor {public void doPaint(Matrix m) {}
}abstract class Image {public void setImp(Implementor imp) {this.imp imp;}public abstract void parseFile(String fileName);//用于保存实现部分的对象protected Implementor imp;
}class BMPImage extends Image {//完成对图像文件的解析操作而 imp 的具体实现是由 Image 的子类决定的Overridepublic void parseFile(String fileName) {(2)}
}class GIFImage extends Image {Overridepublic void parseFile(String fileName) {}
}class JPEGImage extends Image {Overridepublic void parseFile(String fileName) {}
}class Main {public static void main(String[] args) {//Linux上查看demo.gif图像文件Image image (3);Implementor imageImpl (4);(5)image.parseFile(demo.gif);}
}
答案
(1)public abstract void doPaint(Matrix m); (2)this.imp.doPaint(new Matrix()); (3)new GIFImage() (4)new LinuxImp() (5)image.setImp(imageImpl);
解析
这段代码是在使用桥接模式目的是让不同的图像文件在不同的操作系统上显示。
先介绍几个主要的类
Implementor 类实现者类这个类定义了一个操作 doPaint但不指定具体的实现。有两个具体的子类分别是 WinImp 和 LinuxImp它们分别代表在 Windows 和 Linux 操作系统上的实际图像操作。
Matrix 类这个类可能用于表示图像矩阵但在这个例子中没有被用到可能是作者为了演示桥接模式而故意加上去的。
Image 类这是另一个抽象类代表图像。有三个具体的子类 BMPImage、GIFImage、JPEGImage它们分别表示不同格式的图像。Image 类中有一个成员变量 imp它的类型是 Implementor用来执行具体的图像操作。
关键的点在于 Image 类的 parseFile 方法。这个方法调用 imp.doPaint(new Matrix()) 来执行图像的解析和显示操作。这个方法在 Image 的子类中被具体实现不同的子类可以指定不同的 imp从而在不同的操作系统上显示图像。
在 Main 类中演示了如何创建一个 GIFImage 对象然后设置它的实现者imp为 LinuxImp最后解析 “demo.gif” 图像文件。这就是桥接模式的应用。