重构add方法