纵有疾风起
人生不言弃

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

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()        {                    }    }}

 

文章转载于:https://www.cnblogs.com/CoderAyu/p/8490151.html

原著是一个有趣的人,若有侵权,请通知删除

未经允许不得转载:起风网 » C#简单工厂和抽象类的实例
分享到: 生成海报

评论 抢沙发

评论前必须登录!

立即登录