需要实现两个接口