learn Design Patterns by js