Skip to content

Commit 0879fe7

Browse files
committed
Composite is done
1 parent 1d53ee9 commit 0879fe7

File tree

7 files changed

+130
-1
lines changed

7 files changed

+130
-1
lines changed

Composite/Classes/Component.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
using System;
2+
3+
namespace Composite.Classes
4+
{
5+
public abstract class Component
6+
{
7+
protected string name;
8+
9+
public Component(string name)
10+
{
11+
this.name = name;
12+
}
13+
14+
public virtual void Add(Component component) { }
15+
16+
public virtual void Remove(Component component) { }
17+
18+
public virtual void Print()
19+
{
20+
Console.WriteLine(name);
21+
}
22+
}
23+
}

Composite/Classes/Directory.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
using System;
2+
using System.Collections.Generic;
3+
4+
namespace Composite.Classes
5+
{
6+
public class Directory : Component
7+
{
8+
private List<Component> components = new List<Component>();
9+
10+
public Directory(string name)
11+
: base(name)
12+
{
13+
}
14+
15+
public override void Add(Component component)
16+
{
17+
components.Add(component);
18+
}
19+
20+
public override void Remove(Component component)
21+
{
22+
components.Remove(component);
23+
}
24+
25+
public override void Print()
26+
{
27+
Console.WriteLine("Module " + name);
28+
Console.WriteLine("Submodules:");
29+
for (int i = 0; i < components.Count; i++)
30+
{
31+
components[i].Print();
32+
}
33+
}
34+
}
35+
}

Composite/Classes/File.cs

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
namespace Composite.Classes
2+
{
3+
public class File : Component
4+
{
5+
public File(string name) : base(name)
6+
{
7+
}
8+
}
9+
}

Composite/Composite.csproj

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<OutputType>Exe</OutputType>
5+
<TargetFramework>netcoreapp2.0</TargetFramework>
6+
</PropertyGroup>
7+
8+
</Project>

Composite/Program.cs

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
using Composite.Classes;
2+
using System;
3+
4+
namespace Composite
5+
{
6+
class Program
7+
{
8+
static void Main(string[] args)
9+
{
10+
Component fileSystem = new Directory("File system");
11+
// new disk
12+
Component diskC = new Directory("Disk c");
13+
// new file
14+
Component pngFile = new File("12345.png");
15+
Component docxFile = new File("Document.docx");
16+
// new files on disk C
17+
diskC.Add(pngFile);
18+
diskC.Add(docxFile);
19+
// add new disk C on file system
20+
fileSystem.Add(diskC);
21+
// print new data
22+
fileSystem.Print();
23+
Console.WriteLine();
24+
// remove file
25+
diskC.Remove(pngFile);
26+
// create new folder
27+
Component docsFolder = new Directory("My documents");
28+
// add new files
29+
Component txtFile = new File("readme.txt");
30+
Component csFile = new File("Program.cs");
31+
docsFolder.Add(txtFile);
32+
docsFolder.Add(csFile);
33+
diskC.Add(docsFolder);
34+
35+
fileSystem.Print();
36+
37+
Console.Read();
38+
}
39+
}
40+
}

DesignPatterns.sln

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Adapter", "Adapter\Adapter.
3030
EndProject
3131
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Bridge", "Bridge\Bridge.csproj", "{3B82C0AD-94D8-4D44-9C08-26BA970741BB}"
3232
EndProject
33+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Composite", "Composite\Composite.csproj", "{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}"
34+
EndProject
3335
Global
3436
GlobalSection(SolutionConfigurationPlatforms) = preSolution
3537
Debug|Any CPU = Debug|Any CPU
@@ -208,6 +210,18 @@ Global
208210
{3B82C0AD-94D8-4D44-9C08-26BA970741BB}.Release|x64.Build.0 = Release|Any CPU
209211
{3B82C0AD-94D8-4D44-9C08-26BA970741BB}.Release|x86.ActiveCfg = Release|Any CPU
210212
{3B82C0AD-94D8-4D44-9C08-26BA970741BB}.Release|x86.Build.0 = Release|Any CPU
213+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
214+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
215+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Debug|x64.ActiveCfg = Debug|Any CPU
216+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Debug|x64.Build.0 = Debug|Any CPU
217+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Debug|x86.ActiveCfg = Debug|Any CPU
218+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Debug|x86.Build.0 = Debug|Any CPU
219+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
220+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Release|Any CPU.Build.0 = Release|Any CPU
221+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Release|x64.ActiveCfg = Release|Any CPU
222+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Release|x64.Build.0 = Release|Any CPU
223+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Release|x86.ActiveCfg = Release|Any CPU
224+
{47FE58FE-5CC4-4D29-AA56-2FD7D02AB8BB}.Release|x86.Build.0 = Release|Any CPU
211225
EndGlobalSection
212226
GlobalSection(SolutionProperties) = preSolution
213227
HideSolutionNode = FALSE

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ My realizations of design patterns:
1010
- Structural Patterns
1111
- [x] #Adapter
1212
- [x] #Bridge
13-
- [ ] #Composite
13+
- [x] #Composite
1414
- [x] #Decorator
1515
- [x] #Facade
1616
- [ ] #Flyweight

0 commit comments

Comments
 (0)