public static Photo Load(string path)
public class PhotoProcessor
public void Process(string path, Action<Photo> filterHandler)
var photo = Photo.Load(path);
public class PhotoFilters
public void ApplyBrightness(Photo photo)
Console.WriteLine("Apply brightness");
public void ApplyContrast(Photo photo)
Console.WriteLine("Apply contrast");
public void Resize(Photo photo)
Console.WriteLine("Resize photo");
public static void Main()
var processor = new PhotoProcessor();
var filters = new PhotoFilters();
Action<Photo> filterHandler = filters.ApplyBrightness;
filterHandler += filters.ApplyContrast;
filterHandler += RemoveRedEyeFilter;
processor.Process("photo.jpg", filterHandler);
static void RemoveRedEyeFilter(Photo photo)
Console.WriteLine("Apply RemoveRedEye");