private static void DecoratorScenario() { var economyCar = new EconomyCar(); var economyCarWithDeluxeAccessories = new DeluxeAccessories(economyCar); var deluxeCar = new DeluxeCar(); var deluxeCarWithBasicAccessories = new BasicAccessories(deluxeCar); var deluxeCarWithDeluxeAccessories = new DeluxeAccessories(deluxeCar); Console.WriteLine($"{economyCar.GetDescription()} - {economyCar.GetCost()}"); Console.WriteLine($"{economyCarWithDeluxeAccessories.GetDescription()} - {economyCarWithDeluxeAccessories.GetCost()}"); Console.WriteLine($"{deluxeCar.GetDescription()} - {deluxeCar.GetCost()}"); Console.WriteLine($"{deluxeCarWithBasicAccessories.GetDescription()} - {deluxeCarWithBasicAccessories.GetCost()}"); Console.WriteLine($"{deluxeCarWithDeluxeAccessories.GetDescription()} - {deluxeCarWithDeluxeAccessories.GetCost()}"); }
public void Main() { //Create EconomyCar instance. ICar objCar = new EconomyCar(); //Wrp EconomyCar instance with BasicAccessories. CarAccessoriesDecorator objAccessoriesDecorator = new BasicAccessories(objCar); //Wrap EconomyCar instance with AdvancedAccessories instance. objAccessoriesDecorator = new AdvancedAccessories(objAccessoriesDecorator); Console.Write("Car Details: " + objAccessoriesDecorator.GetDescription()); Console.WriteLine("\n\n"); Console.Write("Total Price: " + objAccessoriesDecorator.GetCost()); Console.Read(); }
static void Main(string[] args) { // Create EcomomyCar instance. ICar objCar = new EconomyCar(); // Wrp EconomyCar instancw with BasicAccessories. CarAccessoriesDecorator objAccessoriesDecorator = new BasicAccessories(objCar); // Wrap EconomyCar instance with AdvancedAccessories instance. objAccessoriesDecorator = new AdvancedAccessories(objAccessoriesDecorator); Console.Write("Car Details: " + objAccessoriesDecorator.Description); Console.WriteLine(Environment.NewLine); Console.Write("Total Price: " + objAccessoriesDecorator.Cost); Console.ReadKey(); }
/* * * Ref : https://www.c-sharpcorner.com/UploadFile/damubetha/decorator-pattern-in-csharp/ * * Definition : The Decorator Pattern provides a flexible alternative to sub classing for extending functionality dynamically. */ static void Main(string[] args) { ICar economyCar = new EconomyCar(); // Wrapping an economy car with basic accessories. CarAccessoriesDecorator objAccessoriesDecorator = new BasicAccessories(economyCar); // Wrapping the economy car with sports accessories also. objAccessoriesDecorator = new SportsAccessories(objAccessoriesDecorator); // Wrapping the economy car with luxury accessories. objAccessoriesDecorator = new AdvancedAccessories(objAccessoriesDecorator); Console.WriteLine(" Car details : " + objAccessoriesDecorator.GetDescription()); Console.WriteLine(" "); Console.WriteLine("Total Price : " + objAccessoriesDecorator.GetCost()); Console.ReadLine(); }
static void Main(string[] args) { ICar economyCar = new EconomyCar(); ICar basicEconomyCar = new BasicAccessories(economyCar); ICar advancedEconomyCar = new AdvancedAccessories(basicEconomyCar); Console.WriteLine("Детайли: " + advancedEconomyCar.GetDescription()); Console.WriteLine("Волан: " + advancedEconomyCar.GetSteeringWheel()); Console.WriteLine("Тапицерия: " + advancedEconomyCar.GetUpholstery()); Console.WriteLine("Климатик: " + advancedEconomyCar.GetConditioning()); Console.WriteLine("Цвят: " + advancedEconomyCar.GetColor()); Console.WriteLine("Пълна цена: " + advancedEconomyCar.GetCost()); ICar sportEconomyCar = new SportsAccessories(advancedEconomyCar); Console.WriteLine("Детайли: " + sportEconomyCar.GetDescription()); Console.WriteLine("Волан: " + sportEconomyCar.GetSteeringWheel()); Console.WriteLine("Тапицерия: " + sportEconomyCar.GetUpholstery()); Console.WriteLine("Климатик: " + sportEconomyCar.GetConditioning()); Console.WriteLine("Цвят: " + sportEconomyCar.GetColor()); Console.WriteLine("Пълна цена: " + sportEconomyCar.GetCost()); }