private static void Main(string[] args) { Console.WriteLine("======= Demonstration of Composite ======="); // make the root of my hard disk IComponent root = new Folder("Root"); // create some folder in a hierarchy // root // --- a // --- b // --- c IComponent folderA = new Folder("FolderA"); root.AddComponent(folderA); IComponent folderB = new Folder("FolderB"); folderA.AddComponent(folderB); IComponent folderC = new Folder("FolderC"); root.AddComponent(folderC); // add some 'files' to the a folder IComponent fileX = new File("FileX", 1000); IComponent fileY = new File("FileY", 3000); IComponent fileZ = new File("FileZ", 5000); folderA.AddComponent(fileX); folderA.AddComponent(fileY); folderA.AddComponent(fileZ); // add some 'files' to the b folder IComponent file1 = new File("File1", 30); IComponent file2 = new File("File2", 20); IComponent file3 = new File("File3", 10); folderB.AddComponent(file1); folderB.AddComponent(file2); folderB.AddComponent(file3); // leaf operation Console.WriteLine("File 1 has size " + file1.Size() + " (Correct: 30)"); // composite operation Console.WriteLine("Folder b has size " + folderB.Size() + " (Correct: 60)"); Console.WriteLine("Folder root has size " + root.Size() + " (Correct: 9060)"); Console.WriteLine("Printing the root folder/file structure:"); root.Print(0); Console.WriteLine("Deleting root..."); root.Delete(); Console.WriteLine("Folder root has size " + root.Size() + " (Correct: 0)"); Console.ReadKey(); }
private static void Main(string[] args) { Console.WriteLine("======= Demonstration of Composite ======="); // make the root of my hard disk IComponent root = new Folder("Root"); // create some folder in a hierarchy // root // --- a // --- b // --- c IComponent folderA = new Folder("FolderA"); root.AddComponent(folderA); IComponent folderB = new Folder("FolderB"); folderA.AddComponent(folderB); IComponent folderC = new Folder("FolderC"); root.AddComponent(folderC); // add some 'files' to the a folder IComponent fileX = new File("FileX", 1000); IComponent fileY = new File("FileY",3000); IComponent fileZ = new File("FileZ",5000); folderA.AddComponent(fileX); folderA.AddComponent(fileY); folderA.AddComponent(fileZ); // add some 'files' to the b folder IComponent file1 = new File("File1",30); IComponent file2 = new File("File2",20); IComponent file3 = new File("File3",10); folderB.AddComponent(file1); folderB.AddComponent(file2); folderB.AddComponent(file3); // leaf operation Console.WriteLine("File 1 has size " + file1.Size() + " (Correct: 30)"); // composite operation Console.WriteLine("Folder b has size " + folderB.Size() + " (Correct: 60)"); Console.WriteLine("Folder root has size " + root.Size() + " (Correct: 9060)"); Console.WriteLine("Printing the root folder/file structure:"); root.Print(0); Console.WriteLine("Deleting root..."); root.Delete(); Console.WriteLine("Folder root has size " + root.Size() + " (Correct: 0)"); Console.ReadKey(); }
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); }