Skip to content

Commit 1a7769b

Browse files
committed
Update state pattern examples
1 parent 4bf367a commit 1a7769b

File tree

21 files changed

+56
-93
lines changed

21 files changed

+56
-93
lines changed

src/BehavioralPatterns/State/StateLibrary/ConceptualExample/ConceptualExecutor.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
using BuildingBlocks;
2-
using StateLibrary.ConceptualExample;
32
using StateLibrary.ConceptualExample.States;
43

5-
namespace ObserverLibrary.StockExample;
4+
namespace StateLibrary.ConceptualExample;
65

76
public static class ConceptualExecutor
87
{
@@ -14,4 +13,4 @@ public static void Execute()
1413
context.Request1();
1514
context.Request2();
1615
}
17-
}
16+
}

src/BehavioralPatterns/State/StateLibrary/ConceptualExample/Context.cs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,11 @@ public class Context
1212
/// <summary>
1313
/// A reference to the current state of the Context.
1414
/// </summary>
15-
private State _state = null;
15+
private State _state;
1616

1717
public Context(State state)
1818
{
19+
_state = state;
1920
TransitionTo(state);
2021
}
2122

@@ -33,13 +34,7 @@ public void TransitionTo(State state)
3334
/// <summary>
3435
/// The Context delegates part of its behavior to the current State object.
3536
/// </summary>
36-
public void Request1()
37-
{
38-
_state.Handle1();
39-
}
37+
public void Request1() => _state.Handle1();
4038

41-
public void Request2()
42-
{
43-
_state.Handle2();
44-
}
45-
}
39+
public void Request2() => _state.Handle2();
40+
}

src/BehavioralPatterns/State/StateLibrary/ConceptualExample/States/Common/State.cs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,11 @@
77
/// </summary>
88
public abstract class State
99
{
10-
protected Context _context;
10+
protected Context? _context;
1111

12-
public void SetContext(Context context)
13-
{
14-
_context = context;
15-
}
12+
public void SetContext(Context context) => _context = context;
1613

1714
public abstract void Handle1();
1815

1916
public abstract void Handle2();
20-
}
17+
}

src/BehavioralPatterns/State/StateLibrary/ConceptualExample/States/ConcreteStateA.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,14 +9,16 @@ public class ConcreteStateA : State
99
{
1010
public override void Handle1()
1111
{
12+
if (_context == null)
13+
{
14+
return;
15+
}
16+
1217
Console.WriteLine("ConcreteStateA handles request1.");
1318
Console.WriteLine("ConcreteStateA wants to change the state of the context.");
1419

1520
_context.TransitionTo(new ConcreteStateB());
1621
}
1722

18-
public override void Handle2()
19-
{
20-
Console.WriteLine("ConcreteStateA handles request2.");
21-
}
22-
}
23+
public override void Handle2() => Console.WriteLine("ConcreteStateA handles request2.");
24+
}

src/BehavioralPatterns/State/StateLibrary/ConceptualExample/States/ConcreteStateB.cs

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,18 @@ namespace StateLibrary.ConceptualExample.States;
44

55
public class ConcreteStateB : State
66
{
7-
public override void Handle1()
8-
{
9-
Console.Write("ConcreteStateB handles request1.");
10-
}
7+
public override void Handle1() => Console.Write("ConcreteStateB handles request1.");
118

129
public override void Handle2()
1310
{
11+
if (_context == null)
12+
{
13+
return;
14+
}
15+
1416
Console.WriteLine("ConcreteStateB handles request2.");
1517
Console.WriteLine("ConcreteStateB wants to change the state of the context.");
1618

1719
_context.TransitionTo(new ConcreteStateA());
1820
}
19-
}
21+
}

src/BehavioralPatterns/State/StateLibrary/Executor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using DesignPatternsLibrary.PatternExecutors;
2-
using ObserverLibrary.StockExample;
2+
using StateLibrary.ConceptualExample;
33
using StateLibrary.PackageExample;
44
using StateLibrary.SteakCookingExample;
55

@@ -15,4 +15,4 @@ public override void Execute()
1515
PackageExecutor.Execute();
1616
SteakCookingExecutor.Execute();
1717
}
18-
}
18+
}

src/BehavioralPatterns/State/StateLibrary/PackageExample/Package.cs

Lines changed: 5 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -7,23 +7,11 @@ public class Package
77
{
88
private PackageState _state = new OrderedState();
99

10-
public void Proceed()
11-
{
12-
_state.Proceed(this);
13-
}
10+
public void Proceed() => _state.Proceed(this);
1411

15-
public void Revert()
16-
{
17-
_state.Revert(this);
18-
}
12+
public void Revert() => _state.Revert(this);
1913

20-
public void PrintStatus()
21-
{
22-
_state.PrintStatus();
23-
}
14+
public void PrintStatus() => _state.PrintStatus();
2415

25-
public void ChangeState(PackageState state)
26-
{
27-
_state = state;
28-
}
29-
}
16+
public void ChangeState(PackageState state) => _state = state;
17+
}

src/BehavioralPatterns/State/StateLibrary/PackageExample/PackageExecutor.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public static void Execute()
88
{
99
ConsoleExtension.WriteSeparator("Package example");
1010

11-
Package package = new Package();
11+
var package = new Package();
1212
package.PrintStatus();
1313

1414
package.Proceed();
@@ -20,4 +20,4 @@ public static void Execute()
2020
package.Proceed();
2121
package.PrintStatus();
2222
}
23-
}
23+
}

src/BehavioralPatterns/State/StateLibrary/PackageExample/States/Common/PackageState.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
public abstract class PackageState
44
{
55
public abstract void Proceed(Package package);
6-
76
public abstract void Revert(Package package);
8-
97
public abstract void PrintStatus();
10-
}
8+
}

src/BehavioralPatterns/State/StateLibrary/PackageExample/States/DeliveredState.cs

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,12 @@ namespace StateLibrary.PackageExample.States;
44

55
public class DeliveredState : PackageState
66
{
7-
public override void Proceed(Package package)
8-
{
7+
public override void Proceed(Package package) =>
98
package.ChangeState(new ReceivedState());
10-
}
119

12-
public override void Revert(Package package)
13-
{
10+
public override void Revert(Package package) =>
1411
package.ChangeState(new OrderedState());
15-
}
1612

17-
public override void PrintStatus()
18-
{
13+
public override void PrintStatus() =>
1914
Console.WriteLine("Package delivered to post office, not received yet.");
20-
}
21-
}
15+
}

0 commit comments

Comments
 (0)