Skip to content

Commit cc9903c

Browse files
committed
Update composite pattern examples
1 parent 0711e91 commit cc9903c

File tree

18 files changed

+46
-89
lines changed

18 files changed

+46
-89
lines changed

src/StructuralPatterns/Composite/CompositeLibrary/Executor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,4 +15,4 @@ public override void Execute()
1515
GiftExecutor.Execute();
1616
ShareholdersExecutor.Execute();
1717
}
18-
}
18+
}

src/StructuralPatterns/Composite/CompositeLibrary/FileSystemExample/Common/FileSystemEntry.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@
22

33
public abstract class FileSystemEntry
44
{
5-
public FileSystemEntry(string name)
5+
protected FileSystemEntry(string name)
66
{
77
Name = name;
88
}
99

1010
public string Name { get; }
1111

1212
public abstract double GetSizeInMB();
13-
}
13+
}

src/StructuralPatterns/Composite/CompositeLibrary/FileSystemExample/File.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,5 @@ public File(string name, double size)
1212

1313
public double Size { get; }
1414

15-
public override double GetSizeInMB()
16-
{
17-
return Size;
18-
}
19-
}
15+
public override double GetSizeInMB() => Size;
16+
}

src/StructuralPatterns/Composite/CompositeLibrary/FileSystemExample/FileSystemExecutor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ public static void Execute()
1818
cSharpFolder.Add(new File("C#_8.0_in_a_nutshell.pdf", 11.1));
1919
cSharpFolder.Add(new File("C#_in_depth.pdf", 4.9));
2020

21-
designPatternsFolder.Add(new File("Head_first_design_patterns.pdf", 27.0));
21+
designPatternsFolder.Add(new File("Head_first_design_patterns.pdf", 20.0));
2222

2323
Console.WriteLine($"Total size of 'Books' folder: {booksFolder.GetSizeInMB()} MB");
2424
Console.WriteLine($"Total size of 'C#' folder: {cSharpFolder.GetSizeInMB()} MB");
2525
Console.WriteLine($"Total size of 'Design patterns' folder : {designPatternsFolder.GetSizeInMB()} MB");
2626
}
27-
}
27+
}

src/StructuralPatterns/Composite/CompositeLibrary/FileSystemExample/Folder.cs

Lines changed: 5 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,17 @@ namespace CompositeLibrary.FileSystemExample;
44

55
public class Folder : FileSystemEntry
66
{
7-
private List<FileSystemEntry> _items;
7+
private readonly List<FileSystemEntry> _items;
88

99
public Folder(string name)
1010
: base(name)
1111
{
1212
_items = new List<FileSystemEntry>();
1313
}
1414

15-
public void Add(FileSystemEntry entry)
16-
{
17-
_items.Add(entry);
18-
}
15+
public void Add(FileSystemEntry entry) => _items.Add(entry);
1916

20-
public void Remove(FileSystemEntry entry)
21-
{
22-
_items.Remove(entry);
23-
}
17+
public void Remove(FileSystemEntry entry) => _items.Remove(entry);
2418

25-
public override double GetSizeInMB()
26-
{
27-
return _items.Sum(item => item.GetSizeInMB());
28-
}
29-
}
19+
public override double GetSizeInMB() => _items.Sum(item => item.GetSizeInMB());
20+
}

src/StructuralPatterns/Composite/CompositeLibrary/GiftExample/Common/Gift.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
public abstract class Gift
44
{
55
protected readonly string _description;
6-
protected readonly decimal _price;
6+
protected decimal _price;
77

8-
public Gift(string description, decimal price)
8+
protected Gift(string description, decimal price)
99
{
1010
_description = description;
1111
_price = price;
1212
}
1313

1414
public abstract decimal CalculatePrice();
15-
}
15+
}
Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
1-
using CompositeLibrary.GiftExample.Common;
2-
3-
namespace CompositeLibrary.GiftExample;
1+
namespace CompositeLibrary.GiftExample.Common;
42

53
public interface IGiftOperations
64
{
75
void Add(Gift gift);
8-
96
void Remove(Gift gift);
10-
}
7+
}

src/StructuralPatterns/Composite/CompositeLibrary/GiftExample/CompositeGift.cs

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,26 @@ public class CompositeGift : Gift, IGiftOperations
77
/// <summary>
88
/// This collection can store simple as well as composite gifts.
99
/// </summary>
10-
private List<Gift> _gifts;
10+
private readonly List<Gift> _gifts;
1111

1212
public CompositeGift(string description)
1313
: base(description, 0)
1414
{
1515
_gifts = new List<Gift>();
1616
}
1717

18-
public void Add(Gift gift)
19-
{
18+
public void Add(Gift gift) =>
2019
_gifts.Add(gift);
21-
}
2220

23-
public void Remove(Gift gift)
24-
{
25-
// Consider using HashSet or Dictionary if you need remove item from a collection.
21+
public void Remove(Gift gift) =>
22+
// Consider using HashSet or Dictionary if you need remove an item from a collection.
2623
_gifts.Remove(gift);
27-
}
2824

2925
public override decimal CalculatePrice()
3026
{
31-
decimal totalPrice = 0;
32-
3327
Console.WriteLine($"'{_description}' contains the following products with prices:");
34-
foreach (var gift in _gifts)
35-
{
36-
totalPrice += gift.CalculatePrice();
37-
}
28+
_price = _gifts.Sum(gift => gift.CalculatePrice());
3829

39-
return totalPrice;
30+
return _price;
4031
}
41-
}
32+
}

src/StructuralPatterns/Composite/CompositeLibrary/GiftExample/GiftExecutor.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,8 @@ public static void Execute()
1818
var dadsGift = new SimpleGift("Fishing rod", 50);
1919
var momsGift = new SimpleGift("Necklace", 80);
2020
var childrenGift = new CompositeGift("Children gift");
21-
var soldierToy = new SimpleGift("Soldier toy", 40);
22-
var barbieToy = new SimpleGift("Barbie toy", 50);
23-
24-
childrenGift.Add(soldierToy);
25-
childrenGift.Add(barbieToy);
21+
childrenGift.Add(new SimpleGift("Soldier toy", 40));
22+
childrenGift.Add(new SimpleGift("Barbie toy", 50));
2623

2724
familyGift.Add(dadsGift);
2825
familyGift.Add(momsGift);
@@ -31,4 +28,4 @@ public static void Execute()
3128
var familyGiftPrice = familyGift.CalculatePrice();
3229
Console.WriteLine($"Total price for family gift: {familyGiftPrice:C}");
3330
}
34-
}
31+
}

src/StructuralPatterns/Composite/CompositeLibrary/GiftExample/SimpleGift.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ public SimpleGift(string description, decimal price)
1212
public override decimal CalculatePrice()
1313
{
1414
Console.WriteLine($"'{_description}' with the price of {_price:C}");
15-
1615
return _price;
1716
}
18-
}
17+
}

0 commit comments

Comments
 (0)