design_patterns Implementations and Notes on "Design Patterns Elements of Reusable Object-Oriented Software" by the Gang of Four