其他
JAVA设计模式之桥接模式
/**
* JDBC 驱动连接管理类
* @author lvzb.software@qq.com
*
*/
public class JdbcDriverManager {
public String connectAndReadOracle(){
// 模拟连接Oracle数据库的代码
System.out.println("已成功连接到Oracle数据库");
// 模式 省略 从数据库中获取内容的代码
String content = "已成功从Oracle数据库中读取到了内容";
return content;
}
public String connectAndReadMySql(){
// 模拟连接MySql数据库的代码
System.out.println("已成功连接到MySql数据库");
// 模式 省略 从数据库中获取内容的代码
String content = "已成功从MySql数据库中读取到了内容";
return content;
}
public String connectAndReadSqlServer(){
// 模拟连接Sql Server数据库的代码
System.out.println("已成功连接到Sql Server数据库");
// 模式 省略 从数据库中获取内容的代码
String content = "已成功从Sql Server数据库中读取到了内容";
return content;
}
}
/**
* 获取文件内容、连接数据库来源接口
* @author lvzb.software@qq.com
*
*/
public interface FileExportImpl {
/**
* 读取数据库中的内容
* @param jdbcDriver
* @return
*/
public String readContent();
}
/**
* 从Oracle数据库获取内容
* @author lvzb.software@qq.com
*
*/
public class FileExportFromOracle implements FileExportImpl {
@Override
public String readContent() {
JdbcDriverManager jdbcDriver = new JdbcDriverManager();
return jdbcDriver.connectAndReadOracle();
}
}
/**
* 从MySql数据库获取内容
* @author lvzb.software@qq.com
*
*/
public class FileExportFromMySql implements FileExportImpl {
@Override
public String readContent() {
JdbcDriverManager jdbcDriver = new JdbcDriverManager();
return jdbcDriver.connectAndReadMySql();
}
}
/**
* 从Sql Server数据库获取内容
* @author lvzb.software@qq.com
*
*/
public class FileExportFromSqlServer implements FileExportImpl {
@Override
public String readContent() {
JdbcDriverManager jdbcDriver = new JdbcDriverManager();
return jdbcDriver.connectAndReadSqlServer();
}
}
/**
* 文件格式导出 抽象类
* @author lvzb.software@qq.com
*
*/
public abstract class FileExportAbstraction {
protected FileExportImpl fileSouce;
public void setFileSource(FileExportImpl fileSouce){
this.fileSouce = fileSouce;
}
public abstract void exportFile();
}
/**
* Txt文件格式导出具体类
* @author lvzb.software@qq.com
*
*/
public class TxtFileExport extends FileExportAbstraction {
@Override
public void exportFile() {
String readContent = fileSouce.readContent();
System.out.println(readContent + ",将内容导出为.txt格式");
}
}
/**
* xml文件格式导出具体类
* @author lvzb.software@qq.com
*
*/
public class XmlFileExport extends FileExportAbstraction {
@Override
public void exportFile() {
String readContent = fileSouce.readContent();
System.out.println(readContent + ",将内容导出为.xml格式");
}
}
/**
* pdf文件格式导出具体类
* @author lvzb.software@qq.com
*
*/
public class PdfFileExport extends FileExportAbstraction {
@Override
public void exportFile() {
String readContent = fileSouce.readContent();
System.out.println(readContent + ",将内容导出为.pdf格式");
}
}
public class Client {
public static void main(String[] args) {
FileExportImpl fileOracle = new FileExportFromOracle();
FileExportImpl fileMySql = new FileExportFromMySql();
FileExportImpl fileSqlServer = new FileExportFromSqlServer();
FileExportAbstraction fileTxtExport = new TxtFileExport();
FileExportAbstraction fileXmlExport = new XmlFileExport();
FileExportAbstraction filePdfExport = new PdfFileExport();
// 如果我们要从Oracle中导出xml格式的数据
fileXmlExport.setFileSource(fileOracle);
fileXmlExport.exportFile();
System.out.println("--------------------\n");
// 如果我们要从Oracle中导出txt格式的数据
fileTxtExport.setFileSource(fileOracle);
fileTxtExport.exportFile();
System.out.println("--------------------\n");
// 如果我们要从MySql中导出pdf格式的数据
filePdfExport.setFileSource(fileMySql);
filePdfExport.exportFile();
}
}
已成功连接到Oracle数据库
已成功从Oracle数据库中读取到了内容,将内容导出为.xml格式
--------------------
已成功连接到Oracle数据库
已成功从Oracle数据库中读取到了内容,将内容导出为.txt格式
--------------------
已成功连接到MySql数据库
已成功从MySql数据库中读取到了内容,将内容导出为.pdf格式