using csharp.StrategyPatternExample.Strategy; using System; using System.Collections.Generic; namespace csharp.StrategyPatternExample { /// /// This class is responsible for providing a category strategy to a given item. /// static internal class CategoryStrategiesFactory { #region Methods static public ICategoryStrategy GetCategoryStrategies(Item item) { switch (item.Name) { case Global.NAME_ITEM_AGED_BRIE: return new OlderIsBetterStrategy(); case Global.NAME_ITEM_BACKSTAGE_PASSES: return new CloseExpiredImproveQualityStrategy(new List() { new CloseExpiredImproveQualityStrategy.NextExpiredCondition() { SellInLimit = 5, Increment = 3 }, new CloseExpiredImproveQualityStrategy.NextExpiredCondition() { SellInLimit = 10, Increment = 2 } }); case Global.NAME_ITEM_SULFURAS: return new DoNothingStrategy(); case Global.NAME_ITEM_CONJURED: return new TwiceFastDegradeQualityStrategy(); default: return new NormalDegradeStrategy(); } } #endregion } }