/**
         *  ADAPTER:
         *  Definition: Convert the interface of a class into another interface clients expect.
         *  Adapter lets classes work together that couldn't otherwise because of incompatible interfaces.
         *
         *  Participants:
         *
         *      Target   (ChemicalCompound)
         *      defines the domain-specific interface that Client uses.
         *
         *      Adapter   (Compound)
         *      adapts the interface Adaptee to the Target interface.
         *
         *      Adaptee   (ChemicalDatabank)
         *      defines an existing interface that needs adapting.
         *
         *      Client   (AdapterApp)
         *      collaborates with objects conforming to the Target interface.
         */
        static void Main(string[] args)
        {
            // Non-adapted chemical compound
            Compound unknown = new Compound("Unknown");

            unknown.Display();

            // Adapted chemical compund
            Compound water = new RichCompound("Water");

            water.Display();

            Compound benzene = new RichCompound("Benzene");

            benzene.Display();

            Compound ehtanol = new RichCompound("Ethanol");

            ehtanol.Display();

            Console.ReadKey();
        }
        /// <summary>
        /// Entry point into console application.
        /// </summary>
        static void Main()
        {
            // Non-adapted chemical compound
            Compound unknown = new Compound("Unknown");

            unknown.Display();

            // Adapted chemical compounds
            Compound water = new RichCompound("Water");

            water.Display();

            Compound benzene = new RichCompound("Benzene");

            benzene.Display();

            Compound ethanol = new RichCompound("Ethanol");

            ethanol.Display();

            // Wait for user
            Console.ReadKey();
        }