static void Main(string[] args) { #region FactoryMethod Console.WriteLine("\nDemonstrating \"Factory Method\":"); Shop shop1 = new Amazon(); Shop shop2 = new Wallmart(); Console.WriteLine("\nBuying cookies."); Cookies cookies1 = shop1.BuyCookies(); Cookies cookies2 = shop2.BuyCookies(); Console.WriteLine("\nEating cookies."); cookies1.Eat(); cookies2.Eat(); #endregion #region AbstractFactory Console.WriteLine("\nDemonstrating \"Abstract Factory\""); Console.WriteLine("\nBorn gods"); God zeus = new God(new BornZeus()); God poseidon = new God(new BornPoseidon()); God aid = new God(new BornAids()); Console.WriteLine("\nZeus is here"); zeus.Weapon.Attack(); zeus.Ability.Use(); Console.WriteLine("\nPoseidon is here"); poseidon.Weapon.Attack(); poseidon.Ability.Use(); Console.WriteLine("\nAid is here"); aid.Weapon.Attack(); aid.Ability.Use(); #endregion #region Singleton Console.WriteLine("\nDemonstrating \"Singleton\""); Console.WriteLine("\nResources of player:"); Console.WriteLine($"Gold: {ResourcesCounter.GetInstance().Gold.ToString()}"); Console.WriteLine($"Wood: {ResourcesCounter.GetInstance().Wood.ToString()}"); #endregion Console.Write("\nPress key to continue..."); Console.ReadLine(); }
public void ResourceOffers(ISchedulerDriver driver, IEnumerable<Offer> offers) { foreach (var offer in offers) { var tasks = new List<TaskInfo>(); var resourcesCounter = new ResourcesCounter(offer); bool done; do { done = true; string renderUrl; if (resourcesCounter.HasRenderTaskResources() && _renderQueue.TryDequeue(out renderUrl)) { tasks.Add(GetRenderTaskInfo(offer, ++_launchedTasks, renderUrl)); resourcesCounter.SubstractRenderResources(); done = false; } string crawlUrl; if (resourcesCounter.HasCrawlTaskResources() && _crawlQueue.TryDequeue(out crawlUrl)) { tasks.Add(GetCrawlTaskInfo(offer, ++_launchedTasks, crawlUrl)); resourcesCounter.SubstractCrawlResources(); _crawled.Add(crawlUrl); done = false; } } while (!done); if (tasks.Any ()) { driver.LaunchTasks (new[] { offer.id }, tasks); } else driver.DeclineOffer(offer.id); } }