最新版本。废弃了模板，使用工厂方式生成box