Design Patterns Notes