public static void Main(string[] args) { #region Observer Pattern Book b = new Book("The lord of the rings"); var l = new Librarian(); var g = new Grocer(); var r = new Restorer(); b.addObserver(l); b.addObserver(g); b.addObserver(r); b.Notify(); Console.WriteLine("---------------------------------------------------------"); #endregion #region Factory Method Pattern MyApplication app = new MyApplication(); var doc = app.createDocument(); doc.Open(); Console.WriteLine("---------------------------------------------------------"); #endregion #region Bridge Pattern AbstractPicture img = new JPG(new OSXImp()); img.Caller(); img = new BMP(new WinImp()); img.Caller(); img = new GIF(new LinuxImp()); img.Caller(); Console.WriteLine("---------------------------------------------------------"); #endregion #region Abstract Factory Pattern // THIS IS THE CLIENT CLASS CONTENT MENTIONED ON PATTERN PRINCIPLES. IFactory factory = new PMFactory(); IScrollbar scrollbar = factory.BuildScrollbar(); IWindow window = factory.BuildWindow(); scrollbar.Draw(); window.Draw(); Console.WriteLine("\n"); factory = new MOTIFFactory(); scrollbar = factory.BuildScrollbar(); window = factory.BuildWindow(); scrollbar.Draw(); window.Draw(); Console.WriteLine("---------------------------------------------------------"); #endregion #region Adapter Pattern var oldcar = new OldCar("Chevrolet", "Impala", new DateTime(1967, 1, 1)); var adapter = new OldNewAdapter(oldcar); Console.WriteLine(adapter.getBrand()); Console.WriteLine(adapter.getYears()); Console.WriteLine("---------------------------------------------------------"); #endregion }