• 多态


     具体实现:

      

    interface IFileOpen()
    {
      void Open()  
    }

    定义所有文件的公共基类:

    abstract class Files:IFileOpen
    {
         private FileType fileType = FileType.doc;
         public FileType FileType
    {
          get {return fileType;}  
    }    
          public abstact void Open();
    }
      abstract class DocFile : Files {
            public int GetPageCount() { 
                
            }
        }
    
        abstract class ImageFile : Files { 
            public void ZoomIn()
            {
    
            }
            public void ZoomOut()
            {
    
            }
        }

    基类Files实现了IFileOpen接口,对派生类做了归档,初步实现了文件类型,图片类型和媒体类型三个大类。

    实现具体资料类

    class WORDFile:DocFile
    {
        public ovveride void Open(){
           Console.WriteLine("Open the WORD fILE");
    }  
    }

    同时设计一个资料管理类来进行资料的统一管理:

     class LoadManager
        {
            private IList<Files> files = new List<Files>();
            public IList<Files> Files
            {
                get { return files; }
            }
            public void LoadFiles(Files file)
            {
                files.Add(file);
            }
            //打开所有资料
            public void OpenAllFiles()
            {
                foreach (IFileOpen file in files)
                {
                    file.Open();
                }
            }
            //打开单个资料
            public void OpenFile(IFileOpen file)
            {
                file.Open();
            }
            //获取文件类型
            public FileType GetFileType(string fileName) {
                //根据指定路径文件返回文件类型
                FileInfo fi = new FileInfo(fileName);
                return (FileType)Enum.Parse(typeof(FileType), fi.Extension);
            }
        }

    实现简单的客户端,根据所需进行文件的加载:

    Class FileClient
    {
        public static void Main()
    {
          //首先启动文件加载器
         LoadManager lm = new LoadManager();
    
         //添加要处理的文件
         lm.LoadFiles(new WORDFile());
         lm.LoadFiles(new PDFFile());
         lm.LoadFiles(new JPGFile());
         lm.LoadFiles(new AVGFile());
    
         foreach(Files file in lm.Files){
             if(file is 爷爷选择的){
    
                  lm.OpenFile(file);
    }
    }
    }    

    随需而变的业务:

     

    class MPEGFile:MediaFile
    {
       public override void Open()
      {
             Console.WriteLine("Open the MPEG file");
       }
    }

    添加新文件的加载操作

    lm.LoadFiles(new MPEGFile());
  • 相关阅读:
    细心也是一种态度
    EDM数据访问的三种方式
    如何快速提交网站备案 ICP备案
    c# winform 关于给静态全局变量赋值的问题
    c#DIY随机数类winform 2010
    手把手教你如何用IIS搭建手机WAP网站(图文)
    admin密码对应的MD5值,16位和32位,admin解密自己留着方便.
    C#实现MD5加密,winform c#2005
    最全的c#日期函数 winform
    如何解决因网站备案号没下来而网站被迫关闭的办法
  • 原文地址:https://www.cnblogs.com/maxuefeng/p/15625959.html
Copyright © 2020-2023  润新知