design_patterns_3afactorymethod