C#简单工厂和抽象类的实例

来源:互联网 发布:cf占卜软件 编辑:程序博客网 时间:2024/05/17 06:24
using System;using System.Collections.Generic;using System.Diagnostics;using System.IO;using System.Linq;using System.Text;using System.Threading.Tasks;namespace 模拟磁盘打开文件{    class Program    {        static void Main(string[] args)        {            Console.WriteLine("请选择要进入的磁盘");            string path = Console.ReadLine();            Console.WriteLine("请选择要打开的文件");            string fileName = Console.ReadLine();            FileFarher ff = GetFile(fileName,path+fileName);//返回的是被之类重写的FileFarher                 ff.OpenFile();            Console.ReadLine();        }        public static FileFarher GetFile(string filename,string fullpath)        {            string extension = Path.GetExtension(filename);            FileFarher ff = null;            switch (extension)            {                case ".txt":ff = new TxTPath(fullpath);                    break;                case ".jpg":ff = new JpgPath(fullpath);                    break;            }            return ff;        }    }    public abstract class FileFarher   //父类    {        public string fileName        {            get;            set;        }        public FileFarher(string filename)        {            this.fileName = filename;        }    public abstract void OpenFile();    }    public class TxTPath : FileFarher  //继承父类    {    public TxTPath(string filename) : base(filename)   //继承父类中的filename        {        }        public override void OpenFile()        {            ProcessStartInfo pso = new ProcessStartInfo(this.fileName);            Process p = new Process();            p.StartInfo = pso;            p.Start();        }    }    public class JpgPath : FileFarher   //继承父类    {        public JpgPath(string filename) : base(filename) //继承父类中的filename        {        }        public override void OpenFile()        {                    }    }}

0 0
原创粉丝点击