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

/ 默认分类 / 没有评论 / 14 浏览
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()
    {
        
    }
}

}


 

  1. 回复