实现 apply 和 unapply 方法。实现了 apply 方法意味着对象实例化不需要 new 关键字,实现 unapply 方法意味着支持模式匹配构造方法的参数,都是 public 权限,意味着可以直接访问实现 equals 方法,这个方法用来判断两个对象是否相等实现 Product 接口,支持遍历构造方法的参数