桥接模式
案例
公司欲开发一个数据转换工具,可以将数据库中的数据转换成多种文件格式,例如txt、xml、pdf等格式,同时该工具需要支持多种不同的数据库。下面我们先通过继承的方式来完成这一目的:
1.首先定义了一个抽象类:
/**
* 文件父类
*/
public abstract class File {
public abstract void translate();
}
2.两个转化为不同格式的子类:
txt 格式
/**
* 转化为 txt 格式的文件类
*/
public class TxtFile extends File {
public void translate() {
System.out.println("转化为 txt 文件格式");
}
}
xml 格式
/**
* 转化为 xml 格式的文件类
*/
public class XmlFile extends File {
public void translate() {
System.out.println("转化为 xml 文件格式");
}
}
3.再通过继承的方式从数据库读取数据:
从 mysql 读取数据并转化为 txt 格式
/**
* 从 mysql 读取数据后转化为 txt 格式的文件类
*/
public class MysqlToTxt extends TxtFile {
@Override
public void translate() {
System.out.println("从 mysql 数据库读取数据");
super.translate();
}
}
从 mysql 读取数据并转化为 xml 格式
/**
* 从 mysql 读取数据后转化为 xml 格式的文件类
*/
public class MysqlToXml extends XmlFile {
@Override
public void translate() {
System.out.println("从 mysql 数据库读取数据");
super.translate();
}
}
从 oracle 读取数据并转化为 txt 格式
/**
* 从 oracle 读取数据后转化为 txt 格式的文件类
*/
public class OracleToTxt extends TxtFile {
@Override
public void translate() {
System.out.println("从 oracle 数据库读取数据");
super.translate();
}
}
从 oracle 读取数据并转化为 xml 格式
/**
* 从 oracle 读取数据后转化为 xml 格式的文件类
*/
public class OracleToXml extends XmlFile {
@Override
public void translate() {
System.out.println("从 oracle 数据库读取数据");
super.translate