designpattern_factorymethod