重新编写的模板类