Compare commits

...

2 Commits

Author SHA1 Message Date
syneffort 7cce2e2d34 command 1 year ago
syneffort 3d8d1058ed command 1 year ago
  1. 84
      DesignPattern/DesignPattern/Patterns/CommandPattern.cs
  2. 4
      DesignPattern/DesignPattern/Program.cs

@ -0,0 +1,84 @@
namespace DesignPattern.Patterns
{
interface ICommand
{
void Execute();
}
class User
{
private List<ICommand> _commands = new List<ICommand>();
public void AddCommand(ICommand command)
{
_commands.Add(command);
}
public void AddCommand(StockBroker broker, string symbol, TxType txType, int qty)
{
ICommand cmd = new StockCommand(broker, symbol, txType, qty);
_commands.Add(cmd);
}
public void ExecuteAll()
{
foreach (var cmd in _commands)
{
cmd.Execute();
}
}
}
class StockCommand : ICommand
{
private StockBroker _broker;
private string _symbol;
private TxType _txType;
private int _qty;
public StockCommand(StockBroker broker, string symbol, TxType txType, int qty)
{
_broker = broker;
_symbol = symbol;
_txType = txType;
_qty = qty;
}
public void Execute()
{
_broker.Process(_symbol, _txType, _qty);
}
}
enum TxType
{
Buy,
Sell
}
class StockBroker
{
public void Process(string stockSymbol, TxType txType, int qty)
{
Console.WriteLine($"{txType}, {stockSymbol}, {qty}");
}
}
class CommandClient
{
public static void Work()
{
var broker = new StockBroker();
User user = new User();
ICommand cmd = new StockCommand(broker, "MSFT", TxType.Buy, 150);
user.AddCommand(cmd);
user.AddCommand(broker, "AMZN", TxType.Sell, 2000);
user.AddCommand(broker, "BRK.B", TxType.Buy, 5000);
user.AddCommand(broker, "APPL", TxType.Sell, 1000);
user.ExecuteAll();
}
}
}

@ -6,6 +6,8 @@ class Program
{
static void Main(string[] args)
{
FactoryClient.Work();
// FactoryClient.Work();
CommandClient.Work();
}
}

Loading…
Cancel
Save