Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 1a7769b

Browse files
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)

AltStyle によって変換されたページ (->オリジナル) /