C#简单工厂和抽象类的实例-阿里云开发者社区

开发者社区> 码农阿宇> 正文

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#MUD英雄大作战二、乔峰篇(副源码文件连接)
C#MUD英雄大作战二、乔峰篇(副源码文件连接)
11 0
C#浮点数问题
C#浮点数问题
7 0
深入剖析一致性算法 Paxos
  这是一个有关Paxos算法非常形象的讲解与示范。Paxos是能够基于一大堆完全不可靠的网络条件下却能可靠确定地实现共识一致性的算法。也就是说:它允许一组不一定可靠的处理器(服务器)在某些条件得到满足情况下就能达成确定的安全的共识,如果条件不能满足也确保这组处理器(服务器)保持一致。   什么是共识?   具体来说是这样:分布式系统中由于网络之间通讯可能会中断,虽然概率很低,但是没有100%完美的网络因此,依靠网络通讯的计算机之间要达成共识就比较困难,假设有X, Y和Z三台计算机谋划在周一攻击人类世界,它们的攻击计划是只要所有计算机可用于战斗时就一起进行攻击,不落下任何一台机器,但是当他
4 0
typescript
TypeScript 的定义功能是将它与 JavaScript 和 CoffeeScript 分开,它是静态类型,它允许声明变量类型。编译器确保为变量分配正确的值类型,并且如果省略类型声明,它甚至可以进行推断。 除了“数字”,“布尔”和“字符串”等几种原始类型之外,您还可以使用名为“any”的动态类型。“Any”类似于C#中的“dynamic”关键字,因为它允许您为变量分配任何类型的值。因此,TypeScript不会标记“任何”变量的类型错误。
7 0
编程的智慧 强烈推荐
编程的智慧 强烈推荐
7 0
文本处理命令 | 学习笔记
快速学习文本处理命令。
6 0
领域建模:分清问题域和问题解决域(下)
领域建模:分清问题域和问题解决域(下)
4 0
初探 thrift
初探 thrift
10 0
常量和变量_C语言简介|学习笔记
快速学习常量和变量_C语言简介
5 0
+关注
码农阿宇
沉迷.Net,无法自拔
74
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载