前言

  园子里说设计模式的文章算得上是海量了,所以本篇文章所用到的迭代器设计模式和组合模式不提供原理解析,有兴趣的朋友可以到一些前辈的设计模式文章上学学,很多很有意思的。在Head First 设计模式这本书中,也有说迭代和组合模式混用的方法,但是使用的语言是JAVA,实现起来比起C#差异还是不少。本人在做几个C#小项目的时候需要用到树形结构,也看到了Head First 设计模式中混用迭代器和组合模式的例子,觉得如果能用C#实现,以后无疑会带来很大的帮助。下面就记录下实现过程,希望有不好的地方,各位前辈大力拍,晚生会努力改正,本文使用C#。

 

效果与目标

  1.能自动遍历树形结构中的所有节点。

  2.对树中所有节点进行统一管理,统一到一个根节点上。

  举个例子:文件系统,有文件夹和文件这两个类型,形成一个文件系统树形结构,使用了本文章所说的混用模式以后,能轻松对每一个结点进行自动处理,最简单的就是打印各自的名字和子文件系统或排序等。

 

实现过程

  下面以文件系统为例,可以根据需要灵活改变,主要讲得是思想而已。

    新建一个C#控制台,随便改个名字。

    搭建类和接口(实现组合模式)。

      1.IFileSystemNode(文件系统接口):

interface IFileSystemNode
    {
        String Name { set; get; }
        String Path { set; get; }
        List<IFileSystemNode> Children { set; get; }
        IEnumerator getIterator();
        void ShowName();
    }
View Code

相关文章: