コード例 #1
0
        static void Main(string[] args)
        {
            /* Файловая система — хороший пример древовидной структуры объектов.
             * Она представлена файлами и папками, при этом очевидно, что файл будет самой минимальной структурной единицей и не будет содержать подразделы.
             * При этом со всеми папками (в том числе вложенными) можно работать одинаково. Отличный вариант, чтобы реализовать паттерн Компоновщик.
             */

            // Нам нужен общий интерфейс, описывающий все объекты нашей системы — файлы и папки. Создадим его: Component.cs

            // Теперь реализуем модель файла — наименьшей единицы нашей древовидной структуры.
            // У файла нет подкомпонентов, поэтому методы Add() и Remove() тут реализованы не будут: File.cs

            // Модель папки-структуры, которая может содержать дочерние элементы (файлы или подпапки): Folder.cs

            // Теперь посмотрим на саму реализацию в клиентском коде:

            // Создание корневой папки
            Component rootFolder = new Folder("Root");

            // Создание файла - компонента низшего уровня
            Component myFile = new File("MyFile.txt");

            // Создание папки с документами
            Folder documentsFolder = new Folder("MyDocuments");

            // Добавляем файл в корневую папки
            rootFolder.Add(myFile);

            // Добавляем подпапку для документов в корневую папку
            rootFolder.Add(documentsFolder);

            // показываем контент корневой папки
            rootFolder.Display();
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: mammadzadaa/FSDM_2911_ru
        static void Main(string[] args)
        {
            var root = new Folder("Root");

            root.Add(new Folder("Some Folder"));
            root.Add(new File("Some File"));

            var subFolder = new Folder("Another Folder");

            subFolder.Add(new File("NewFile1"));
            subFolder.Add(new File("NewFile2"));

            root.Add(subFolder);
            root.Display(0);
        }