以下是一个简单的 PHP 规格模式的示例:
<?php
// 规格接口
interface Specification {
public function isSatisfiedBy($item);
}
// 具体规格类
class PriceSpecification implements Specification {
private $price;
public function __construct($price) {
$this->price = $price;
}
public function isSatisfiedBy($item) {
return $item->getPrice() <= $this->price;
}
}
// 产品类
class Product {
private $name;
private $price;
public function __construct($name, $price) {
$this->name = $name;
$this->price = $price;
}
public function getName() {
return $this->name;
}
public function getPrice() {
return $this->price;
}
}
// 客户端代码
$products = [
new Product("Product1", 20),
new Product("Product2", 30),
new Product("Product3", 15),
];
$priceSpecification = new PriceSpecification(25);
foreach ($products as $product) {
if ($priceSpecification->isSatisfiedBy($product)) {
echo $product->getName() . " is within the price range.\n";
} else {
echo $product->getName() . " is not within the price range.\n";
}
}
在这个例子中,Specification 接口定义了规格的基本方法 isSatisfiedBy。PriceSpecification 类是具体的规格类,用于检查产品的价格是否在指定的范围内。
Product 类表示产品,包括名称和价格。客户端代码创建了一个包含多个产品的数组,并使用 PriceSpecification 对象来检查每个产品是否在指定的价格范围内。
规格模式使得我们能够将业务规则封装到类中,使得这些规则易于管理和组合。可以轻松地添加新的规格类,而不必修改现有的代码。规格模式通常在需要处理复杂的业务规则、条件和过滤器的场景中发挥作用。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11960/PHP