工厂方法作业

某软件公司欲开发一个数据格式转换工具,可以将不同数据源如txt文件、数据库、Excel表格中的数据转换成XML格式。为了让系统具有更好的扩展性,在未来支持新类型的数据源,开发人员使用工厂方法模式设计该转换工具的核心类,客户端只需使用工厂类即可获得具体的转换类对象,再调用其相应方法实现数据转换操作。绘制该类图,并选择一种语言编程实现。

类图:

对应C#代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace DataConversion
{
    interface IDataSource        //数据源接口
    {
        void Converte();
    }

    class TxtSource : IDataSource        //txt文件
    {
        public void Converte()
        {
            Console.WriteLine("txt文件数据源转换为XML格式成功!");
        }
    }
    class DataBaseSource : IDataSource        //数据库文件
    {
        public void Converte()
        {
            Console.WriteLine("数据库文件数据源转换为XML格式成功!");
        }
    }
    class ExcelSource : IDataSource        //Excel文件
    {

        public void Converte()
        {
            Console.WriteLine("Excel文件数据源转换为XML格式成功!");
        }
    }
    interface IConverter        //创建转换接口
    {

        IDataSource CreatConversion();
    }
    class TxtConverteToXML : IConverter        //txt文件转为XML
    {
        public IDataSource CreatConversion()
        {
            Console.WriteLine("连接txt文件数据源成功!");
            return new TxtSource();
        }
    }
    class DataBaseConverteToXML : IConverter        //数据库文件转为XML
    {
        public IDataSource CreatConversion()
        {
            Console.WriteLine("连接数据库文件数据源成功!");
            return new DataBaseSource();
        }
    }
    class ExcelConverteToXML : IConverter        //Excel文件转为XML
    {
        public IDataSource CreatConversion()
        {
            Console.WriteLine("连接Excel文件数据源成功!");
            return new ExcelSource();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IConverter txt = new TxtConverteToXML();        //测试txt文件转化
            txt.CreatConversion().Converte();

            IConverter excel = new ExcelConverteToXML();        //测试Excel文件转化
            excel.CreatConversion().Converte();

            IConverter dataBase = new DataBaseConverteToXML();        //测试数据库文件转化
            dataBase.CreatConversion().Converte();

            Console.ReadKey();
        }
    }
}

输出结果:

原文地址:https://www.cnblogs.com/wangtao1211/p/12519427.html