Scenario:
Create a Currency Helper to add the currency symbol based on countrySolution:
Behavioral Pattern is used to select an algorithm at runtime by dynamic parameter for example.Example: Create a Currency Helper to add the currency symbol based on country
public interface ICurrencyStrategy
{ string ToCurrency(long value); } public static class CurrencyCodes { public const string USD = "$"; public const string INR = "₹"; } public class USCurrencyStrategy : ICurrencyStrategy { public string ToCurrency(long value) { return $"{CurrencyCodes.USD} {value}"; } } public class IndiaCurrencyStrategy : ICurrencyStrategy { public string ToCurrency(long value) { return $"{CurrencyCodes.INR} {value}"; } } public class Currency { public long Value { get; set; } public Currency(long value) { Value = value; } public string ToCurrency() { ICurrencyStrategy currencyStrategy = ResolveStrategyByCountry(); return currencyStrategy.ToCurrency(Value); } private ICurrencyStrategy ResolveStrategyByCountry() { if (CultureInfo.CurrentCulture.Name == "en-US") { return new USCurrencyStrategy(); } if (CultureInfo.CurrentCulture.Name == "en-IN") { return new IndiaCurrencyStrategy(); } return null; } public class StrategyPattern { static void Main(string[] args) { Console.WriteLine("Enter key U for US or I for India"); var key = Console.ReadKey(); switch (key.Key) { case ConsoleKey.U: System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-US"); break; case ConsoleKey.I: System.Threading.Thread.CurrentThread.CurrentCulture = new CultureInfo("en-IN"); break; } var price = new Currency(44); Console.WriteLine($"{price.ToCurrency()}"); } } |
No comments:
Post a Comment