/
CookMethod.cs
74 lines (66 loc) · 1.69 KB
/
CookMethod.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Strategy
{
/// <summary>
/// The Strategy abstract class, which defines an interface common to all supported strategy algorithms.
/// </summary>
abstract class CookStrategy
{
public abstract void Cook(string food);
}
/// <summary>
/// A Concrete Strategy class
/// </summary>
class Grilling : CookStrategy
{
public override void Cook(string food)
{
Console.WriteLine("\nCooking " + food + " by grilling it.");
}
}
/// <summary>
/// A Concrete Strategy class
/// </summary>
class OvenBaking : CookStrategy
{
public override void Cook(string food)
{
Console.WriteLine("\nCooking " + food + " by oven baking it.");
}
}
/// <summary>
/// A Concrete Strategy class
/// </summary>
class DeepFrying : CookStrategy
{
public override void Cook(string food)
{
Console.WriteLine("\nCooking " + food + " by deep frying it");
}
}
/// <summary>
/// The Context class, which maintains a reference to the chosen Strategy.
/// </summary>
class CookingMethod
{
private string Food;
private CookStrategy _cookStrategy;
public void SetCookStrategy(CookStrategy cookStrategy)
{
this._cookStrategy = cookStrategy;
}
public void SetFood(string name)
{
Food = name;
}
public void Cook()
{
_cookStrategy.Cook(Food);
Console.WriteLine();
}
}
}