C#简单工厂设计
class Program
{
static void Main(string[] args)
{
Console.WriteLine(“请输入文件路径”);
string filepath = Console.ReadLine();
Console.WriteLine(“请输入文件名称”);
string filename = Console.ReadLine();
//简单工厂模式
BaseFile bf = GetFile(filepath, filename);
if (bf != null)
{
bf.OpenFile();
}
Console.Read();
}
static BaseFile GetFile(string filePath, string fileName)
{
BaseFile bf =null;
string strext = Path.GetExtension(fileName);
switch (strext)
{
case ".txt":
bf = new TxtFile(filePath, fileName);
break;
case ".mp4":
bf = new Mp4File(filePath, fileName);
break;
}
return bf;
}
}
class BaseFile
{
//字段 、属性、构造函数、函数、索引器
private String _filePath;//Ctrl+R+E(自动封装属性)
public String FilePath
{
get { return _filePath; }
set { _filePath = value; }
}
public string FileName { get; set; }//自动属性填充 prop+两下Tape
public BaseFile(string filepath, string filename)
{
this.FilePath = filepath;
this.FileName = filename;
}
//设计一个函数打开指定文件
public void OpenFile()
{
ProcessStartInfo psi = new ProcessStartInfo(this.FilePath + "\\" + this.FileName);
Process pro = new Process();
pro.StartInfo = psi;
pro.Start();
}
}
class TxtFile : BaseFile
{
//子类会默认调用父类的无参数的构造函数
public TxtFile(string filePath, string fileName)
: base(filePath, fileName)
{
}
}
class Mp4File : BaseFile
{
public Mp4File(string filePath, string fileName)
: base(filePath, fileName)
{
}
}
}