Compare commits
2 Commits
d9167b653b
...
7cce2e2d34
Author | SHA1 | Date |
---|---|---|
|
7cce2e2d34 | 1 year ago |
|
3d8d1058ed | 1 year ago |
@ -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(); |
||||||
|
} |
||||||
|
} |
||||||
|
} |
Loading…
Reference in new issue