工廠方法-實現數據格式轉換器


需求描述:

某軟件公司欲開發一個數據格式轉換工具,可以將不同數據源如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();
    }
}

結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM