.Net学习笔记----2015-07-21(C#基础复习03,简单工厂和抽象类)


        static void Main(string[] args)
        {
            //使用进程打开指定文件
            ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\Administrator\Desktop\Adobe注册机使用说明.txt");
            Process p = new Process();
            p.StartInfo = psi;
            p.Start();
        }

会和前面的笔记重复,但是还是复习一遍吧,上次就没太整明白

模拟控制台打开文件:(复习面向对象)

1、在控制台提示用户要进入的磁盘路径

D:\

2、提示用户输入要打开的文件的名称

1.txt

这样就获得了D:\1.txt    这是文件的全路径

父类:

    public abstract class FileFather
    {
        public string FileName
        {
            get;
            set;
        }

        public FileFather(string fileName)
        {
            this.FileName = fileName;
        }
        public abstract void OpenFile();
    }
}

TxtPath子类:

    class TxtPath : FileFather
    {
        public TxtPath(string fileName)
            : base(fileName)
        {

        }
        public override void OpenFile()
        {
            ProcessStartInfo psi = new ProcessStartInfo(this.FileName);
            Process p = new Process();
            p.StartInfo = psi;
            p.Start();
        }
    }

JpgPath子类:

    class JpgPath : FileFather
    {
        public JpgPath(string fileName)
            : base(fileName)
        {

        }
        public override void OpenFile()
        {
            ProcessStartInfo psi = new ProcessStartInfo(this.FileName);
            Process p = new Process();
            p.StartInfo = psi;
            p.Start();
        }
    }

WmvPath子类:

    class WmvPath : FileFather
    {
        public WmvPath(string fileName)
            : base(fileName)
        {

        }
        public override void OpenFile()
        {
            ProcessStartInfo psi = new ProcessStartInfo(this.FileName);
            Process p = new Process();
            p.StartInfo = psi;
            p.Start();
        }
    }

程序入口:

        static void Main(string[] args)
        {
            //使用进程打开指定文件
            //ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\Administrator\Desktop\Adobe注册机使用说明.txt");
            //Process p = new Process();
            //p.StartInfo = psi;
            //p.Start();

            Console.WriteLine("请选择要进入的磁盘");
            string path = Console.ReadLine();
            Console.WriteLine("请选择要打开的文件");
            string fileName = Console.ReadLine();
            //文件全路径 = path + fileName

            FileFather ff = GetFile(fileName,path + fileName);
            ff.OpenFile();

            Console.ReadKey();
        }

        public static FileFather GetFile(string fileName,string fullPath)
        {
            string extension = Path.GetExtension(fileName);
            FileFather ff = null;
            switch(extension)
            {
                case ".txt": ff = new TxtPath(fullPath);
                    break;
                case ".jpg": ff = new JpgPath(fullPath);
                    break;
                case ".wmv": ff = new WmvPath(fullPath);
                    break;
            }
            return ff;
        }

代码冗余,主要为练习抽象类和抽象方法

时间: 2024-12-21 12:56:40

.Net学习笔记----2015-07-21(C#基础复习03,简单工厂和抽象类)的相关文章

Linux学习笔记——2015/7/21

4.1.4 Linux常用命令-文件处理命令-链接命令 ln 生成链接文件 -s创建软链接 软链接:类似Windows快捷方式 注: 生成软链接文件  l开头   所有权限都是3个 rws 硬链接:   不能跨分区.不能针对目录使用.通过i节点识别 用户分三类 u g o 权限分三类 读 写 4.2.1 Linux常用命令-权限管理命令-权限管理命令chmod chmod  改变文件或目录权限 执行权限:所有用户.管理员root 语法:chmod [{ugoa}{+-=}{rwx}][文件或目录

【Ext.Net学习笔记】07:后续

程序员必看书籍(转载) C++: Prata<C++ Primer Plus>:基础,第一本书.(之前的版本也可,不过推荐最新的) Lippman<Inside C++ Object Model>:初级,加深语言层次上的理解.不过有点小老了.里面的cfront编译器早退出江湖好久了.思想值得学习 侯捷<STL源码剖析>:第三本书,中级,深入STL Vandevoorde<C++ Template>:第四本,中级,范式编程 罗剑锋<Boost>两本

APUE学习笔记:第一章 UNUX基础知识

1.2 UNIX体系结构 从严格意义上,可将操作系统定义为一种软件(内核),它控制计算机硬件资源,提供程序运行环境.内核的接口被称为系统调用.公用函数库构建在系统调用接口之上,应用软件即可使用公用函数库,也可使用系统调用.shell是一种特殊的应用程序,它为运行其他应用程序提供了一个接口 从广义上,操作系统包括了内核和一些其他软件,这些软件使得计算机能够发挥作用,并给予计算机以独有的特性(软件包括系统实用程序,应用软件,shell以及公用函数库等) 1.3  shell shell是一个命令行解

Linux 程序设计学习笔记----终端及串口编程基础之概念详解

转载请注明出处,谢谢! linux下的终端及串口的相关概念有: tty,控制台,虚拟终端,串口,console(控制台终端)详解 部分内容整理于网络. 终端/控制台 终端和控制台都不是个人电脑的概念,而是多人共用的小型中型大型计算机上的概念. 1.终端 一台主机,连很多终端,终端为主机提供了人机接口,每个人都通过终端使用主机的资源. 终端有字符哑终端和图形终端两种. 控制台是另一种人机接口, 不通过终端与主机相连, 而是通过显示卡-显示器和键盘接口分别与主机相连, 这是人控制主机的第一人机接口.

nodejs学习笔记_nodejs和PHP在基础架构上的差别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明确node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node採用一个长期执行的进程 而php在apache中会产生多个进程 例如以下图所看到的: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.creat

Swift学习笔记(一):基础

一.常量 & 变量 //常量 let constantsTeam = 1 //变量 var variablesTeam = 2 尽可能使用常量,这样更清晰并且内存更不容易肾亏. 二.显示/隐式指定类型 //隐式 let inferredTeam = 3 //显式 let explicitTeam:Int = 4 三.字符串输出 //通过\(变量或常量名)来引用组合字符串 println("\(inferredTeam) is bigger than \(variablesTeam)!&q

Node.js学习笔记【3】NodeJS基础、代码的组织和部署、文件操作、网络操作、进程管理、异步编程

一.表 学生表 CREATE TABLE `t_student` ( `stuNum` int(11) NOT NULL auto_increment, `stuName` varchar(20) default NULL, `birthday` date default NULL, PRIMARY KEY  (`stuNum`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 学生分数表 CREATE TABLE `t_stu_score` ( `id` int(11

nodejs学习笔记_nodejs和PHP在基础架构上的区别--共享状态的并发

绝大多数对于Node.js的讨论都把关注点放在了处理高并发能力上,做开发的时候一定要明白node内部做出的权衡,以及node应用性能好的原因. node 为javascript引入了一个复杂的概念,:共享状态的并发. node采用一个长期运行的进程 而php在apache中会产生多个进程 如下图所示: 代码验证: PHP: <?php $i = 0; $i++; echo $i nodejs: var http = require('http'); var i=0; http.createSer

Murano Weekly Meeting 2015.07.21

会议时间: 2015.07.21 主持人: Kirill Zaitsev, core from Mirantis 会议摘要:  1.murano client和murano dashboard升级到yaql1.0.    slagun负责与mistral协调yaql1.0的升级问题,mistral需要一起升级. 2.OpenStack各个项目与olso的接口人. Project Liaison IRC Handle Cinder Jay Bryant jungleboyj Heat Thomas

C#可扩展编程之MEF学习笔记(一):MEF简介及简单的Demo

在文章开始之前,首先简单介绍一下什么是MEF,MEF,全称Managed Extensibility Framework(托管可扩展框架).单从名字我们不难发现:MEF是专门致力于解决扩展性问题的框架,MSDN中对MEF有这样一段说明: Managed Extensibility Framework 或 MEF 是一个用于创建可扩展的轻型应用程序的库. 应用程序开发人员可利用该库发现并使用扩展,而无需进行配置. 扩展开发人员还可以利用该库轻松地封装代码,避免生成脆弱的硬依赖项. 通过 MEF,不