PHP中的规范设计模式实例

57 阅读1分钟

如果我们要解释规格模式,它将是;一个返回truefalse 的逻辑。复合规格类有一个标准方法,称为isSatisfiedBy ,它返回truefalse 的值。这是通过检查给定的对象,看它是否满足我们所设定的规格来完成的。

场景

你正在出售你的房子,并且有一些用户必须满足的标准,以便购买你的房子。该用户必须

  • 最低年龄为18 (这是法律规定,不会改变)。

  • 口袋里有£500000.00 (这可以根据市场情况随时改变)。

  • 必须是alive (显然!)。

例子

用户类

class User

如果我们使用经典的函数式编程,我们的代码将看起来像下面这样。

$saleAmount = 500000.00;

假设我们在应用程序的多个地方使用这段代码。如果有一天规则改变了,我们就有可能在反映变化的时候出现一些问题,比如浪费时间,犯错误等等。另外,它看起来已经不漂亮了,但如果我们不得不给它添加更多的检查,它甚至会看起来更难看。

在下面的例子中,我们将一次性实现 "硬编码规范 "和 "参数化规范"(你不需要这样做)。硬编码规范 "不需要任何参数传递给实际的规范类--即UserStillAliveSpecificationUserIsAdultSpecification 。参数化规格 "确实需要向实际规格类传递参数--即UserHasEnoughMoneySpecification

interface SpecificationInterface
class UserStillAliveSpecification implements SpecificationInterface
class UserIsAdultSpecification implements SpecificationInterface
class UserHasEnoughMoneySpecification implements SpecificationInterface
class House
$saleAmount = 500000.00;