namespace 控制台应用程序{class Program{static void Main(string[] args){while (true){Console.WriteLine(">");string input = Console.ReadLine();if (input == "exit"){//结束程序break;}//有个输入如果不是exit,则执行//父类 f= create(input); f.运行();FileBase file = factory.CreateInstance(input);if (file != null){file.Open();}}}}}
factory.cs
namespace 控制台应用程序{class factory{public static FileBase CreateInstance(string input){//根据文件的类型创建对应的子类对象来打开程序//path.getextension: 获取文件的扩展名string ext= Path.GetExtension(input);//将文件扩展名都小写switch (ext.ToLower()){case ".mp3":return new Media();default: break;}return new FileBase();}}}
FileBase.cs
namespace 控制台应用程序{class FileBase{public virtual void Open(){Console.WriteLine("不是系统命令,无程序可以打开");}}}
Media.cs
namespace 控制台应用程序{class Media:FileBase{public override void Open(){Console.WriteLine("这个是音乐文件,使用音乐播放器打开");}}}
运行结果:

人性一点:输入123.MP3 显示123.MP3这个是音乐文件,使用音乐播放器打开。(传入参数)
namespace 控制台应用程序{class Program{static void Main(string[] args){while (true){Console.WriteLine(">");string input = Console.ReadLine();if (input == "exit"){//结束程序break;}//有个输入如果不是exit,则执行//父类 f= create(input); f.运行();FileBase file = factory.CreateInstance(input);if (file != null){file.Open(input);}}}}}
namespace 控制台应用程序{class FileBase{public virtual void Open(string cmd){Console.WriteLine("{0}不是系统命令,无程序可以打开",cmd);}}}
namespace 控制台应用程序{class Media:FileBase{public override void Open(string cmd){Console.WriteLine("{0}这个是音乐文件,使用音乐播放器打开",cmd);}}}

使用构造方法传参
namespace 控制台应用程序{//class FileBase//{// public virtual void Open(string cmd)// {// Console.WriteLine("{0}不是系统命令,无程序可以打开",cmd);// }//}class FileBase{string file;public string File{get { return file; }}//构造函数public FileBase(string cmd){file = cmd;}public virtual void Open(){Console.WriteLine("{0}不是系统命令,无程序可以打开", file);}}}
namespace 控制台应用程序{// class Media:FileBase// {// public override void Open(string cmd)// {// Console.WriteLine("{0}这个是音乐文件,使用音乐播放器打开",cmd);// }// }class Media : FileBase{public Media(string cmd) : base(cmd){ }public override void Open(){Console.WriteLine("{0}这个是音乐文件,使用音乐播放器打开", File);}}}
namespace 控制台应用程序{class factory{public static FileBase CreateInstance(string input){//根据文件的类型创建对应的子类对象来打开程序//path.getextension: 获取文件的扩展名string ext= Path.GetExtension(input);//将文件扩展名都小写switch (ext.ToLower()){case ".mp3":return new Media(input);default: break;}return new FileBase(input);}}}
namespace 控制台应用程序{class Program{static void Main(string[] args){while (true){Console.WriteLine(">");string input = Console.ReadLine();if (input == "exit"){//结束程序break;}//有个输入如果不是exit,则执行//父类 f= create(input); f.运行();FileBase file = factory.CreateInstance(input);if (file != null){file.Open();}}}}}
文章转载自Louise的50个梦想,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




