using System; using System.Collections.Generic; namespace csharp.Strategy { class CategoryStrategiesFactory { #region Variables static private CategoryStrategiesFactory _strategiesFactory = null; #endregion #region Constructor private CategoryStrategiesFactory() { } #endregion #region Methods public static CategoryStrategiesFactory GetInstance() { if (_strategiesFactory == null) { _strategiesFactory = new CategoryStrategiesFactory(); } return _strategiesFactory; } #endregion public List GetCategoryStrategies(Item item) { List listCategoryStrategies = new List(); if (item.Name == "Aged Brie") { listCategoryStrategies = new List() { new OlderIsBetterStrategy() }; } else if (item.Name == "Backstage passes to a TAFKAL80ETC concert") { listCategoryStrategies = new List() { new NextExpiredImproveQualityStrategy() }; } else if (item.Name == "Sulfuras, Hand of Ragnaros") { listCategoryStrategies = new List() { }; } else if (item.Name == "Conjured Mana Cake") { listCategoryStrategies = new List() { new TwiceFastDegradeQualityStrategy() }; } else { listCategoryStrategies = new List() { new NormalDegradeStrategy() }; } return listCategoryStrategies; } } }