1. 工厂模式(Factory Pattern):
工厂模式提供了一种创建对象的接口,但让子类决定实例化哪个类。它允许一个类在其实例化时延迟到子类。
示例代码:
interface Product {
public function getName();
}
class ConcreteProduct implements Product {
public function getName() {
return "ConcreteProduct";
}
}
class Factory {
public function createProduct() {
return new ConcreteProduct();
}
}
// 使用工厂
$factory = new Factory();
$product = $factory->createProduct();
echo $product->getName(); // 输出 "ConcreteProduct"
2. 抽象工厂模式(Abstract Factory Pattern):
抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定它们的类。
示例代码:
interface AbstractFactory {
public function createProductA();
public function createProductB();
}
class ConcreteFactory1 implements AbstractFactory {
public function createProductA() {
return new ConcreteProductA1();
}
public function createProductB() {
return new ConcreteProductB1();
}
}
class ConcreteFactory2 implements AbstractFactory {
public function createProductA() {
return new ConcreteProductA2();
}
public function createProductB() {
return new ConcreteProductB2();
}
}
// 使用抽象工厂
$factory1 = new ConcreteFactory1();
$productA1 = $factory1->createProductA();
$productB1 = $factory1->createProductB();
$factory2 = new ConcreteFactory2();
$productA2 = $factory2->createProductA();
$productB2 = $factory2->createProductB();
3. 单例模式(Singleton Pattern):
单例模式确保一个类只有一个实例,并提供一个全局访问点。
示例代码:
class Singleton {
private static $instance;
private function __construct() {}
public static function getInstance() {
if (!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
}
// 使用单例
$singleton = Singleton::getInstance();
4. 建造者模式(Builder Pattern):
建造者模式用于构建一个复杂对象,允许按步骤构建,以及在构建过程中细粒度控制。
示例代码:
class Product {
private $parts = [];
public function addPart($part) {
$this->parts[] = $part;
}
public function getParts() {
return $this->parts;
}
}
interface Builder {
public function buildPartA();
public function buildPartB();
public function getResult();
}
class ConcreteBuilder implements Builder {
private $product;
public function __construct() {
$this->product = new Product();
}
public function buildPartA() {
$this->product->addPart("PartA");
}
public function buildPartB() {
$this->product->addPart("PartB");
}
public function getResult() {
return $this->product;
}
}
class Director {
public function construct(Builder $builder) {
$builder->buildPartA();
$builder->buildPartB();
}
}
// 使用建造者模式
$builder = new ConcreteBuilder();
$director = new Director();
$director->construct($builder);
$product = $builder->getResult();
$parts = $product->getParts(); // 包含 PartA 和 PartB 的数组
这些是一些在 PHP 中实现的常见创建型设计模式。它们提供了一种灵活、可维护和可扩展的方式来处理对象的创建过程。
转载请注明出处:http://www.pingtaimeng.com/article/detail/11930/PHP