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

简介: using System; using System.Collections.Generic; using System.Diagnostics; using System.IO; using System.
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()
        {
            
        }
    }
}

 

相关文章
|
缓存 C#
C# 操作路径(Path)类方法的使用与解析运行实例
C# 操作路径(Path)类方法的使用与解析运行实例
|
数据采集 JSON API
C#网络爬虫实例:使用RestSharp获取Reddit首页的JSON数据并解析
C#网络爬虫实例:使用RestSharp获取Reddit首页的JSON数据并解析
|
2月前
|
数据可视化 程序员 C#
C#中windows应用窗体程序的输入输出方法实例
C#中windows应用窗体程序的输入输出方法实例
54 0
|
3月前
|
C# 索引
C# 一分钟浅谈:接口与抽象类的区别及使用
【9月更文挑战第2天】本文详细对比了面向对象编程中接口与抽象类的概念及区别。接口定义了行为规范,强制实现类提供具体实现;抽象类则既能定义抽象方法也能提供具体实现。文章通过具体示例介绍了如何使用接口和抽象类,并探讨了其实现方式、继承限制及实例化差异。最后总结了选择接口或抽象类应基于具体设计需求。掌握这两者有助于编写高质量的面向对象程序。
134 5
|
4月前
|
传感器 开发框架 JSON
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
聊聊 C# dynamic 类型,并分享一个将 dynamic 类型变量转为其它类型的技巧和实例
202 0
|
5月前
|
文字识别 自然语言处理 C#
印刷文字识别使用问题之C#发票识别的代码实例在哪里可以查看
印刷文字识别产品,通常称为OCR(Optical Character Recognition)技术,是一种将图像中的印刷或手写文字转换为机器编码文本的过程。这项技术广泛应用于多个行业和场景中,显著提升文档处理、信息提取和数据录入的效率。以下是印刷文字识别产品的一些典型使用合集。
|
6月前
|
C#
C#||委托和事件的实例
C#||委托和事件的实例
|
7月前
|
程序员 C#
C#抽象类和抽象方法详解
C#抽象类和抽象方法详解
77 0
|
设计模式 自然语言处理 C#
C#OOP之八 继承 接口和抽象类
C#OOP之八 继承 接口和抽象类
57 0
|
7月前
|
C# 开发者 索引
C# 11.0中的所需成员:强化接口与抽象类的约束
【1月更文挑战第24天】C# 11.0引入了所需成员(Required members)的概念,这一新特性允许在接口和抽象类中定义必须被实现的成员,包括方法、属性、索引器和事件。通过所需成员,C# 强化了对接口实现和抽象类继承的约束,提高了代码的一致性和可维护性。本文将详细探讨C# 11.0中所需成员的工作原理、使用场景及其对现有编程模式的影响。