design_pattern study for myself