Implementations of design patterns as I learn them