Get the Code Here:

Best Design Patterns Book :

Here is my Abstract Factory design pattern tutorial. I also take a second look at the Factory design pattern here as well.

This is considered a hard pattern to understand, but I consider it to be a combination of all you have learned previously. You just need to understand that each step is separated by either a abstract class or an interface. This makes it possible to make extremely flexible objects.