工厂方法作业

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

类图:

 

代码:

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

namespace homework
{
    interface IDataSource        
    {
        void Converte();
    }
    class Txt : IDataSource      
    {
        public void Converte()
        {
            Console.WriteLine("txt文件成功转换!\n");
        }
    }
    class DataBase: IDataSource        
    {
        public void Converte()
        {
            Console.WriteLine("数据库文件成功转换!\n");
        }
    }
    class Excel : IDataSource     
    {

        public void Converte()
        {
            Console.WriteLine("Excel文件数据成功转换!\n");
        }
    }
    interface IConverter      
    {

        IDataSource CreatConversion();
    }
    class TxtConverteToXML : IConverter      
    {
        public IDataSource CreatConversion()
        {
            Console.WriteLine("已连接txt文件\n");
            return new Txt();
        }
    }
    class DataBaseConverteToXML : IConverter       
    {
        public IDataSource CreatConversion()
        {
            Console.WriteLine("已连接数据库文件\n");
            return new DataBase();
        }
    }
    class ExcelConverteToXML : IConverter     
    {
        public IDataSource CreatConversion()
        {
            Console.WriteLine("已连接Excel文件\n");
            return new Excel();
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            IConverter txt = new TxtConverteToXML();      
            txt.CreatConversion().Converte();

            IConverter excel = new ExcelConverteToXML();       
            excel.CreatConversion().Converte();

            IConverter dataBase = new DataBaseConverteToXML();      
            dataBase.CreatConversion().Converte();

            Console.ReadKey();
        }
    }
}

运行截图:

 

posted on 2020-03-24 09:40  茜茜是qianqian  阅读(245)  评论(0)    收藏  举报