add designPatten Factory