重新设计builder