工廠三兄弟之工廠方法模式(三):日誌記錄器的工廠方法模式解決方案
阿新 • • 發佈:2019-01-29
3 完整解決方案
Sunny公司開發人員決定使用工廠方法模式來設計日誌記錄器,其基本結構如圖3所示:
在圖3中,Logger介面充當抽象產品,其子類FileLogger和DatabaseLogger充當具體產品,LoggerFactory介面充當抽象工廠,其子類FileLoggerFactory和DatabaseLoggerFactory充當具體工廠。完整程式碼如下所示:
//日誌記錄器介面:抽象產品
interface Logger {
public void writeLog();
}
//資料庫日誌記錄器:具體產品
class DatabaseLogger implements Logger {
public void writeLog() {
System.out.println("資料庫日誌記錄。");
}
}
//檔案日誌記錄器:具體產品
class FileLogger implements Logger {
public void writeLog() {
System.out.println("檔案日誌記錄。");
}
}
//日誌記錄器工廠介面:抽象工廠
interface LoggerFactory {
public Logger createLogger();
}
//資料庫日誌記錄器工廠類:具體工廠
class DatabaseLoggerFactory implements LoggerFactory {
public Logger createLogger() {
//連線資料庫,程式碼省略
//建立資料庫日誌記錄器物件
Logger logger = new DatabaseLogger();
//初始化資料庫日誌記錄器,程式碼省略
return logger;
}
}
//檔案日誌記錄器工廠類:具體工廠
class FileLoggerFactory implements LoggerFactory {
public Logger createLogger() {
//建立檔案日誌記錄器物件
Logger logger = new FileLogger();
//建立檔案,程式碼省略
return logger;
}
}
編寫如下客戶端測試程式碼:
class Client {
public static void main(String args[]) {
LoggerFactory factory;
Logger logger;
factory = new FileLoggerFactory(); //可引入配置檔案實現
logger = factory.createLogger();
logger.writeLog();
}
}
編譯並執行程式,輸出結果如下:
檔案日誌記錄。