-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathResturant.cs
62 lines (51 loc) · 1.31 KB
/
Resturant.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
using System;
using System.Collections.Generic;
// Command interface
interface ICommand {
void Execute();
}
// Receiver classes
class Chef {
public void Cook(string dish) {
Console.WriteLine($"Cooking {dish}...");
}
}
class Waiter {
public void Serve(string dish) {
Console.WriteLine($"Serving {dish}...");
}
}
// Concrete command classes
class OrderCommand : ICommand {
private Chef _chef;
private Waiter _waiter;
private string _dish;
public OrderCommand(Chef chef, Waiter waiter, string dish) {
_chef = chef;
_waiter = waiter;
_dish = dish;
}
public void Execute() {
_chef.Cook(_dish);
_waiter.Serve(_dish);
}
}
// Invoker class
class OrderManager {
private List<ICommand> _orders = new List<ICommand>();
public void PlaceOrder(ICommand command) {
_orders.Add(command);
command.Execute();
}
}
class Program {
static void Main(string[] args) {
Chef chef = new Chef();
Waiter waiter = new Waiter();
OrderManager orderManager = new OrderManager();
ICommand order1 = new OrderCommand(chef, waiter, "Pasta");
ICommand order2 = new OrderCommand(chef, waiter, "Steak");
orderManager.PlaceOrder(order1);
orderManager.PlaceOrder(order2);
}
}