Skip to content

Commit 6e7bb8a

Browse files
author
viveksacademia4git
committed
Refactor - Merge COR files
#6
1 parent cfbc282 commit 6e7bb8a

14 files changed

+120
-118
lines changed
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
using GofPattern.Behavioral.ChainOfResponsibilityPattern.Orchestrators.Chains;
2+
3+
namespace GofPattern.Behavioral.ChainOfResponsibilityPattern.Orchestrators;
4+
5+
public class AbstractResponsibilityChainOrchestrator<TResponsibilityChain>
6+
where TResponsibilityChain : AbstractResponsibilityChain<TResponsibilityChain>
7+
{
8+
protected void AppendChain(TResponsibilityChain responsibilityChain)
9+
{
10+
if (Chain is null)
11+
Chain = responsibilityChain;
12+
else
13+
Chain.SetNext(responsibilityChain);
14+
}
15+
16+
public TResponsibilityChain? Chain { get; private set; }
17+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
namespace GofPattern.Behavioral.ChainOfResponsibilityPattern.Orchestrators.Chains;
2+
3+
public abstract class AbstractResponsibilityChain<TResponsibilityChain>
4+
where TResponsibilityChain : AbstractResponsibilityChain<TResponsibilityChain>
5+
{
6+
protected AbstractResponsibilityChain(string name)
7+
{
8+
Name = name;
9+
}
10+
11+
internal void SetNext(TResponsibilityChain responsibilityChain)
12+
{
13+
if (Next is null)
14+
Next = responsibilityChain;
15+
else
16+
Next.SetNext(responsibilityChain);
17+
}
18+
19+
public TResponsibilityChain? Next { get; private set; }
20+
21+
public string Name { get; }
22+
}
23+
24+
public abstract class AbstractResponsibilityChain<TResponsibilityChain, TResponsibility>
25+
: AbstractResponsibilityChain<TResponsibilityChain>
26+
where TResponsibilityChain : AbstractResponsibilityChain<TResponsibilityChain, TResponsibility>
27+
{
28+
protected AbstractResponsibilityChain(TResponsibility responsibility, string name) : base(name)
29+
{
30+
Responsibility = responsibility;
31+
}
32+
33+
public TResponsibility Responsibility { get; }
34+
}
Lines changed: 9 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,24 @@
33

44
namespace GofPattern.Behavioral.ChainOfResponsibilityPattern.Orchestrators.Chains;
55

6-
public class ResponsibilityChain<TInput>
6+
public class
7+
ResponsibilityChain<TInput> : AbstractResponsibilityChain<ResponsibilityChain<TInput>, IResponsibility<TInput>>
78
{
89
internal ResponsibilityChain(IResponsibility<TInput> responsibility, ChainOrchestratorHandleOptions handleOption,
9-
ChainOrchestratorInvokeNextOptions invokeNextHandlerOption, string name)
10+
ChainOrchestratorInvokeNextOptions invokeNextHandlerOption, string name) : base(responsibility, name)
1011
{
11-
Responsibility = responsibility;
1212
HandleOption = handleOption;
1313
InvokeNextHandlerOption = invokeNextHandlerOption;
14-
Name = name;
1514
}
1615

17-
internal void SetNext(ResponsibilityChain<TInput> next)
18-
{
19-
if (Next is null)
20-
Next = next;
21-
else
22-
Next.SetNext(next);
23-
}
24-
25-
public ResponsibilityChain<TInput>? Next { get; private set; }
26-
27-
public IResponsibility<TInput> Responsibility { get; }
28-
2916
public ChainOrchestratorHandleOptions HandleOption { get; }
3017

3118
public ChainOrchestratorInvokeNextOptions InvokeNextHandlerOption { get; }
19+
}
3220

33-
public string Name { get; }
21+
public class ResponsibilityChain<TInput, TOutput> : AbstractResponsibilityChain<ResponsibilityChain<TInput, TOutput>,
22+
IResponsibility<TInput, TOutput>>
23+
{
24+
public ResponsibilityChain(IResponsibility<TInput, TOutput> responsibility, string name) : base(responsibility,
25+
name) { }
3426
}

GofPattern/Behavioral/ChainOfResponsibilityPattern/Orchestrators/Chains/ResponsibilityChainInputOutput.cs

Lines changed: 0 additions & 26 deletions
This file was deleted.

GofPattern/Behavioral/ChainOfResponsibilityPattern/Orchestrators/Interfaces/IResponsibilityChainActionBeforeHandling.cs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,5 +7,4 @@ public interface IResponsibilityChainActionBeforeHandling<TInput>
77
Action? ActionBeforeHandling { get; set; }
88

99
Action<TInput>? ActionInputBeforeHandling { get; set; }
10-
1110
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,14 @@ IResponsibilityChainOrchestrator<TInput> Append(IResponsibility<TInput> responsi
1414
void Execute(TInput input);
1515

1616
ResponsibilityChain<TInput>? Chain { get; }
17+
}
18+
19+
public interface IResponsibilityChainOrchestrator<TInput, TOutput> : IResponsibilityChainActionBeforeHandling<TInput>
20+
{
21+
IResponsibilityChainOrchestrator<TInput, TOutput> Append(IResponsibility<TInput, TOutput> responsibility,
22+
string? name = null);
23+
24+
TOutput Execute(TInput input);
25+
26+
ResponsibilityChain<TInput, TOutput>? Chain { get; }
1727
}

GofPattern/Behavioral/ChainOfResponsibilityPattern/Orchestrators/Interfaces/IResponsibilityChainOrchestratorInputOutput.cs

Lines changed: 0 additions & 14 deletions
This file was deleted.

GofPattern/Behavioral/ChainOfResponsibilityPattern/Orchestrators/ResponsibilityChainOrchestratorInput.cs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
namespace GofPattern.Behavioral.ChainOfResponsibilityPattern.Orchestrators;
1010

11-
public class ResponsibilityChainOrchestrator<TInput> : IResponsibilityChainOrchestrator<TInput>
11+
public class ResponsibilityChainOrchestrator<TInput> :
12+
AbstractResponsibilityChainOrchestrator<ResponsibilityChain<TInput>>,
13+
IResponsibilityChainOrchestrator<TInput>
1214
{
1315
public IResponsibilityChainOrchestrator<TInput> Append(IResponsibility<TInput> responsibility,
1416
ChainOrchestratorHandleOptions handleOption, ChainOrchestratorInvokeNextOptions invokeNextHandlerOption,
@@ -17,10 +19,7 @@ public IResponsibilityChainOrchestrator<TInput> Append(IResponsibility<TInput> r
1719
var responsibilityChain = new ResponsibilityChain<TInput>(responsibility, handleOption, invokeNextHandlerOption,
1820
name ?? responsibility.GetType().Name);
1921

20-
if (Chain is null)
21-
Chain = responsibilityChain;
22-
else
23-
Chain.SetNext(responsibilityChain);
22+
AppendChain(responsibilityChain);
2423

2524
return this;
2625
}
@@ -98,8 +97,6 @@ private void InvokeNext(TInput input, ResponsibilityChain<TInput> responsibility
9897
Execute(input, responsibilityChain.Next);
9998
}
10099

101-
public ResponsibilityChain<TInput>? Chain { get; private set; }
102-
103100
private void ExecuteBeforeHandling(TInput input)
104101
{
105102
ActionBeforeHandling?.Invoke();

GofPattern/Behavioral/ChainOfResponsibilityPattern/Orchestrators/ResponsibilityChainOrchestratorInputOuput.cs

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,18 +5,17 @@
55

66
namespace GofPattern.Behavioral.ChainOfResponsibilityPattern.Orchestrators;
77

8-
public class ResponsibilityChainOrchestrator<TInput, TOutput> : IResponsibilityChainOrchestrator<TInput, TOutput>
8+
public class ResponsibilityChainOrchestrator<TInput, TOutput> :
9+
AbstractResponsibilityChainOrchestrator<ResponsibilityChain<TInput, TOutput>>,
10+
IResponsibilityChainOrchestrator<TInput, TOutput>
911
{
1012
public IResponsibilityChainOrchestrator<TInput, TOutput> Append(IResponsibility<TInput, TOutput> responsibility,
1113
string? name = null)
1214
{
1315
var responsibilityChain =
1416
new ResponsibilityChain<TInput, TOutput>(responsibility, name ?? responsibility.GetType().Name);
1517

16-
if (Chain is null)
17-
Chain = responsibilityChain;
18-
else
19-
Chain.SetNext(responsibilityChain);
18+
AppendChain(responsibilityChain);
2019

2120
return this;
2221
}
@@ -57,10 +56,7 @@ private void ExecuteBeforeHandling(TInput input)
5756
ActionInputBeforeHandling?.Invoke(input);
5857
}
5958

60-
public ResponsibilityChain<TInput, TOutput>? Chain { get; private set; }
61-
6259
public Action? ActionBeforeHandling { get; set; }
6360

6461
public Action<TInput>? ActionInputBeforeHandling { get; set; }
65-
6662
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace GofPattern.Behavioral.ChainOfResponsibilityPattern.Responsibilities.Implementations;
2+
3+
public abstract class AbstractResponsibility<TInput>
4+
{
5+
private readonly Predicate<TInput> predicate;
6+
7+
protected AbstractResponsibility(Predicate<TInput> predicate)
8+
{
9+
this.predicate = predicate;
10+
}
11+
12+
public bool IsResponsible(TInput input)
13+
{
14+
var isResponsible = predicate.Invoke(input);
15+
return isResponsible;
16+
}
17+
}

0 commit comments

Comments
 (0)