예제 #1
0
        static void Main(string[] args)
        {
            //针对抽象构件编程
            AbstractFile file1, file2, file3, file4, file5, folder1, folder2, folder3, folder4;

            folder1 = new Folder("我的资料");
            folder2 = new Folder("图像文件");
            folder3 = new Folder("文本文件");
            folder4 = new Folder("视频文件");

            file1 = new ImageFile("小龙女.jpg ");
            file2 = new ImageFile("张无忌.gif ");
            file3 = new TextFile("九阴真经.txt ");
            file4 = new TextFile("葵花宝典.doc ");
            file5 = new VideoFile("神雕侠侣.rmvb");

            folder2.Add(file1);
            folder2.Add(file2);
            folder3.Add(file3);
            folder3.Add(file4);
            folder4.Add(file5);
            folder1.Add(folder2);
            folder1.Add(folder3);
            folder1.Add(folder4);

            //从“我的资料”节点开始进行杀毒操作
            folder1.KillVirus();
            Console.Read();
        }
예제 #2
0
        static void Main(string[] args)
        {
            AbstractFile file1, file2, file3, file4, file5, folder1, folder2, folder3, folder4;

            folder1 = new Folder("my file");
            folder2 = new Folder("image");
            folder3 = new Folder("text");
            folder4 = new Folder("vidoe");

            file1 = new ImageFile("a.jpg");
            file2 = new ImageFile("b.gif");
            file3 = new TextFile("c.txt");
            file4 = new TextFile("d.doc");
            file5 = new VidoeFile("e.mp4");

            folder2.Add(file1);
            folder2.Add(file2);
            folder3.Add(file3);
            folder3.Add(file4);
            folder4.Add(file5);
            folder1.Add(folder2);
            folder1.Add(folder3);
            folder1.Add(folder4);

            folder1.KillVirus();

            Console.ReadKey(true);
        }
예제 #3
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();
        }
예제 #4
0
        static void Main(string[] args)
        {
            AbstractFile folder1 = new Folder("EDC的资料");
            AbstractFile folder2 = new Folder("图像文件");
            AbstractFile folder3 = new Folder("文本文件");
            AbstractFile folder4 = new Folder("视频文件");

            AbstractFile image1 = new ImageFile("小龙女.jpg");
            AbstractFile image2 = new ImageFile("张无忌.gif");

            AbstractFile text1 = new TextFile("九阴真经.txt");
            AbstractFile text2 = new TextFile("葵花宝典.doc");

            AbstractFile video1 = new VideoFile("笑傲江湖.rmvb");
            AbstractFile video2 = new VideoFile("天龙八部.mp4");

            folder2.Add(image1);
            folder2.Add(image2);

            folder3.Add(text1);
            folder3.Add(text2);

            folder4.Add(video1);
            folder4.Add(video2);

            folder1.Add(folder2);
            folder1.Add(folder3);
            folder1.Add(folder4);

            folder1.KillVirus();
        }
예제 #5
0
        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);
        }
예제 #6
0
        public static void Main()
        {
            var programFilesFolder = new Folder("Program Files");

            var whoCrashedFolder = new Folder("WhoCrashed");

            whoCrashedFolder.Add(new File("readme.txt"));
            whoCrashedFolder.Add(new File("rspCrash32.inf"));
            whoCrashedFolder.Add(new File("rspCrash32.sys"));
            whoCrashedFolder.Add(new File("rspCrash64.inf"));
            whoCrashedFolder.Add(new File("rspCrash64.sys"));
            whoCrashedFolder.Add(new File("rspSymSrv32.dll"));
            whoCrashedFolder.Add(new File("symsrv.dll"));
            whoCrashedFolder.Add(new File("unins000.dat"));
            whoCrashedFolder.Add(new File("unins000.exe"));
            whoCrashedFolder.Add(new File("WhoCrashed.exe"));
            whoCrashedFolder.Add(new File("WhoCrashed32.dll"));
            whoCrashedFolder.Add(new File("WhoCrashedEx.exe"));
            whoCrashedFolder.Add(new File("LICENSE.TXT"));

            programFilesFolder.Add(whoCrashedFolder);

            var versionFolder = new Folder("3.0");
            var binFolder     = new Folder("bin");

            binFolder.Add(new File("mongod.exe"));
            binFolder.Add(new File("..."));
            versionFolder.Add(binFolder);
            versionFolder.Add(new File("GNU-AGPL-3.0"));
            versionFolder.Add(new File("README"));
            versionFolder.Add(new File("THIRD-PARTY-NOTICES"));
            var serverFolder = new Folder("Server");

            serverFolder.Add(versionFolder);
            var mongoDbFolder = new Folder("MongoDB");

            mongoDbFolder.Add(serverFolder);
            programFilesFolder.Add(mongoDbFolder);

            programFilesFolder.Print(0);
        }
예제 #7
0
        static void Main(string[] args)
        {
            var root = new Folder("Root");

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

            var subfolder = new Folder("Sub Folder");

            root.Add(subfolder);

            var subsubfolder = new Folder("Sub Sub Folder");

            subfolder.Add(subsubfolder);

            subsubfolder.Add(new File("Some Item"));
            subsubfolder.Add(new File("Another Item"));
            subsubfolder.Add(new File("And Another Item"));
            subsubfolder.Add(new Folder("Some Folder"));

            root.Draw(0);
        }
        public static void Main()
        {
            File   file1   = new File(5, "file1", DateTime.Now);
            File   file2   = new File(5, "file2", DateTime.Now);
            File   file3   = new File(5, "file3", DateTime.Now);
            Folder folder1 = new Folder("folder1", DateTime.Now, new List <IContainer>());

            folder1.Add(file3);
            //user put 2 in 1 single folder
            List <IContainer> list    = new List <IContainer>(new File[] { file2, file3 });
            IContainer        folder2 = new Folder("folder2", DateTime.Now, list);

            Console.WriteLine(folder2.GetTotalSize());
            Console.ReadLine();
        }