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