using System.Collections.Generic;
namespace AdapterPatternFilip
public static void Main()
Console.WriteLine("Hello Google home");
Lights = new List<ILight>()
new SimpleLight("1","Dnevna soba 1"),
new SimpleLight("2","Dnevna soba 2"),
new SimpleLight("3","Spalna soba"),
new FancyLightAdapter(new FancyLight("4","Office"))
Console.WriteLine("Enter your command");
var command = Console.ReadLine();
var lightId = command.Split(' ')[0];
var onOff = command.Split(' ')[1];
myHome.TurnOnLight(lightId);
myHome.TurnOffLight(lightId);
Console.WriteLine("Invalid command");
Console.WriteLine(string.Format("Light {0} switched {1} :)", lightId, onOff));
public string Name { get; set; }
public List<ILight> Lights;
public void TurnOnLight(string lightId)
Lights.FirstOrDefault(l => l.Id == lightId).TurnOn();
public void TurnOffLight(string lightId)
Lights.FirstOrDefault(l => l.Id == lightId).TurnOff();
public class SimpleLight : ILight
public SimpleLight(string id, string label)
public string Id { get { return _id; } }
public string Label { get { return _label; } }
public class FancyLightAdapter : ILight
private FancyLight _fancyLight;
public FancyLightAdapter(FancyLight fancyLight)
_fancyLight = fancyLight;
public string Id => _fancyLight.Id;
public string Label => _fancyLight.Name;
_fancyLight.DimLight(100);
private decimal _brightness;
public FancyLight(string id, string name)
public string Id { get { return _id; } }
public string Name { get { return _name; } }
public void DimLight(decimal brightness)
_brightness = brightness;