钩子的类型和实现