需求描述:
某軟件公司欲開發一個數據格式轉換工具,可以將不同數據源如txt文件、數據庫、Excel表格中的數據轉換成XML格式。為了讓系統具有更好的擴展性,在未來支持新類型的數據源,開發人員使用工廠方法模式設計該轉換工具的核心類,客戶端只需使用工廠類即可獲得具體的轉換類對象,再調用其相應方法實現數據轉換操作。繪制該類圖,並選擇一種語言編程實現。
在idea中生成UML類圖
具體代碼:
//轉換接口 public interface ConvertFactory { Convertor getConvertor(); } // 產品接口 public interface Convertor { void transform(); } //具體轉換工廠 public class ConcreteConvertFactory { } class DBConvertorFactory implements ConvertFactory{ @Override public Convertor getConvertor() { System.out.println("DataBase轉換工廠Complete"); return new DBConvertor(); } } class EXCELConvertorFactory implements ConvertFactory{ @Override public Convertor getConvertor() { System.out.println("EXCEL轉換工廠Complete"); return new EXCELConvertor(); } } class TXTConvertorFactory implements ConvertFactory{ @Override public Convertor getConvertor() { System.out.println("TXT轉換工廠Complete"); return new TXTConvertor(); } } //具體轉換產品 public class ConcreteConvertor { } class DBConvertor implements Convertor{ @Override public void transform() { System.out.println("DB-->XML"); } } class EXCELConvertor implements Convertor{ @Override public void transform() { System.out.println("EXCEL-->XML"); } } class TXTConvertor implements Convertor{ @Override public void transform() { System.out.println("TXT-->XML"); } }
測試代碼:
public class Client { public static void main(String[] args) { ConvertFactory dbConvertFactory = new DBConvertorFactory(); Convertor dbConvertor = dbConvertFactory.getConvertor(); dbConvertor.transform(); ConvertFactory excelConvertorFactory = new EXCELConvertorFactory(); Convertor excelConvertor = excelConvertorFactory.getConvertor(); excelConvertor.transform(); ConvertFactory txtConvertorFactory = new TXTConvertorFactory(); Convertor txtConvertor = txtConvertorFactory.getConvertor(); txtConvertor.transform(); } }
結果: