From ce0070ebec9a219a89b298a24998d12572c947f5 Mon Sep 17 00:00:00 2001 From: Adam Storr Date: Sat, 2 Jun 2018 21:20:21 +0100 Subject: [PATCH 1/2] Update to IsApplicable --- src/StrategyPatternExample/IMathOperator.cs | 2 +- src/StrategyPatternExample/MathStrategy.cs | 10 +++++++++- src/StrategyPatternExample/Operators/AddOperator.cs | 5 ++++- src/StrategyPatternExample/Operators/DivideOperator.cs | 5 ++++- .../Operators/MultipleOperator.cs | 5 ++++- .../Operators/SubtractOperator.cs | 5 ++++- 6 files changed, 26 insertions(+), 6 deletions(-) diff --git a/src/StrategyPatternExample/IMathOperator.cs b/src/StrategyPatternExample/IMathOperator.cs index 7451c71..251d356 100644 --- a/src/StrategyPatternExample/IMathOperator.cs +++ b/src/StrategyPatternExample/IMathOperator.cs @@ -2,7 +2,7 @@ { public interface IMathOperator { - Operator Operator { get; } + bool IsApplicable(Operator op); int Calculate(int a, int b); } diff --git a/src/StrategyPatternExample/MathStrategy.cs b/src/StrategyPatternExample/MathStrategy.cs index ed864a9..f05f5f9 100644 --- a/src/StrategyPatternExample/MathStrategy.cs +++ b/src/StrategyPatternExample/MathStrategy.cs @@ -15,7 +15,15 @@ public MathStrategy(IEnumerable operators) public int Calculate(int a, int b, Operator op) { - return _operators.FirstOrDefault(x => x.Operator == op)?.Calculate(a, b) ?? throw new ArgumentNullException(nameof(op)); + foreach (var @operator in _operators) + { + if (@operator.IsApplicable(op)) + { + return @operator.Calculate(a, b); + } + } + + throw new ArgumentNullException(nameof(op)); } } } \ No newline at end of file diff --git a/src/StrategyPatternExample/Operators/AddOperator.cs b/src/StrategyPatternExample/Operators/AddOperator.cs index 1e127f1..8ce981f 100644 --- a/src/StrategyPatternExample/Operators/AddOperator.cs +++ b/src/StrategyPatternExample/Operators/AddOperator.cs @@ -2,7 +2,10 @@ { public class AddOperator : IMathOperator { - public Operator Operator => Operator.Add; + public bool IsApplicable(Operator op) + { + return op == Operator.Add; + } public int Calculate(int a, int b) => a + b; } diff --git a/src/StrategyPatternExample/Operators/DivideOperator.cs b/src/StrategyPatternExample/Operators/DivideOperator.cs index c428301..b0d2305 100644 --- a/src/StrategyPatternExample/Operators/DivideOperator.cs +++ b/src/StrategyPatternExample/Operators/DivideOperator.cs @@ -4,7 +4,10 @@ namespace StrategyPatternExample { public class DivideOperator : IMathOperator { - public Operator Operator => Operator.Divide; + public bool IsApplicable(Operator op) + { + return op == Operator.Divide; + } public int Calculate(int a, int b) { diff --git a/src/StrategyPatternExample/Operators/MultipleOperator.cs b/src/StrategyPatternExample/Operators/MultipleOperator.cs index 5b075ce..2282c1d 100644 --- a/src/StrategyPatternExample/Operators/MultipleOperator.cs +++ b/src/StrategyPatternExample/Operators/MultipleOperator.cs @@ -2,7 +2,10 @@ { public class MultipleOperator : IMathOperator { - public Operator Operator => Operator.Multiple; + public bool IsApplicable(Operator op) + { + return op == Operator.Multiple; + } public int Calculate(int a, int b) => a * b; } diff --git a/src/StrategyPatternExample/Operators/SubtractOperator.cs b/src/StrategyPatternExample/Operators/SubtractOperator.cs index dd5de7f..73dfe03 100644 --- a/src/StrategyPatternExample/Operators/SubtractOperator.cs +++ b/src/StrategyPatternExample/Operators/SubtractOperator.cs @@ -2,7 +2,10 @@ { public class SubtractOperator : IMathOperator { - public Operator Operator => Operator.Substract; + public bool IsApplicable(Operator op) + { + return op == Operator.Substract; + } public int Calculate(int a, int b) => a - b; } From 66c86e42997779cd0405f2c2e921aa07e34cd3a2 Mon Sep 17 00:00:00 2001 From: Adam Storr Date: Fri, 4 Jan 2019 19:39:01 +0000 Subject: [PATCH 2/2] Update the security vunerability --- src/StrategyPatternExample/StrategyPatternExample.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/StrategyPatternExample/StrategyPatternExample.csproj b/src/StrategyPatternExample/StrategyPatternExample.csproj index 965e3b7..4c4f12a 100644 --- a/src/StrategyPatternExample/StrategyPatternExample.csproj +++ b/src/StrategyPatternExample/StrategyPatternExample.csproj @@ -9,7 +9,7 @@ - +