The Decorator Pattern is a simple pattern that allows the developer to add responsibilities to an object dynamically. This pattern is useful for extending classes that are locked by use of the "sealed" keyword. The UML diagram for this pattern looks something like this..

An example implimentation would be similar to...

using System;
using System.Collections.Generic;
using System.Text;

namespace garyshort.org.patterns.decorator
{
    //GS - Define our decorator
    public class DecoratoredDateTime
    {
        protected DateTime _itemToDecorate;

        /// <summary>
        /// GS - Construct the decorator passing the object to decorate
        /// </summary>
        /// <param name="aDateTime">DateTime</param>
        public DecoratoredDateTime(DateTime aDateTime)
        {
            _itemToDecorate = aDateTime;
        }

        /// <summary>
        /// GS - Answer whether or not the decorated DateTime 
        /// is a holiday or not
        /// </summary>
        public bool isHoliday
        {
            get
            {
                //GS - Simulate a database lookup or similar here
                Random rnd = new Random();
                return (rnd.Next() % 2) == 0;
            }
        }

        /// <summary>
        /// GS - Answer the short date string of the 
        /// underlying DateTime
        /// </summary>
        /// <returns>string</returns>
        public string ToShortDateString()
        {
            return _itemToDecorate.ToShortDateString();
        }
    }
    
    /// <summary>
    /// GS - Demonstrate adding the knowledge of whether or not a  
    /// DateTime is a holiday to the DateTime struct
    /// </summary>
    class Program
    {
        static void Main(string[] args)
        {
            //GS - Create a DateTime
            DateTime aDateTime = DateTime.Now;

            //GS - Create the decorator so we can add behaviour to 
            //the DateTime
            DecoratoredDateTime aDecoratedDateTime = 
                new DecoratoredDateTime(aDateTime);

            //GS - Ask the decorated DateTime if it is a holiday 
            //date or not
            if (aDecoratedDateTime.isHoliday)
            {
                Console.WriteLine(aDecoratedDateTime.ToShortDateString() +
                    " is a holiday");
            }

            else
            {
                Console.WriteLine(aDecoratedDateTime.ToShortDateString() + 
                    " is not a holiday");
            }

            //GS - Wait for the user to press a key before closing 
            //the DOS box
            Console.Read();
        }
    }
}

Update: Of course the real power of this pattern lies in implementing interfaces so that multiple decorators can be applied to a decorated class. I didn't include that here, for brevity, but there is a good example provided by Greg.