Craig Utley presented a very useful Microsoft Webcast a few months back on three common OO design patterns (Singleton, Factory, and Observer). In addition to describing practical coding techniques to solve particular problems, Craig also shows two methods for implementing each pattern -- a "traditional" approach that uses coding constructs available in most languages, and a more elegant ".NET" approach that takes advantage of features of the .NET framework to achieve the same goal; for example, his .NET implementation of an "Observer" pattern uses delegates/events to communicate between publisher and subscriber objects, rather than having the publisher aggregate references to the subscribers.
There is also a good reference to various patterns, with sample implementations, here.