PHP设计模式概论
概念
设计模式是指在面向对象编程中用于解决特定问题的重复使用的经验总结。设计模式不是一个可直接转换成代码的解决方案,而是定义了一组通用的原则和规范,它们可以用于设计任何系统。
分类
设计模式可以分为三类:创建型、结构型和行为型。
创建型模式
创建型模式主要用于对象的创建,包括“工厂模式”、“抽象工厂模式”、“单例模式”、“原型模式”、“建造者模式”。
结构型模式
结构型模式主要用于处理类或对象的组合,包括“适配器模式”、“桥接模式”、“组合模式”、“装饰模式”、“外观模式”、“享元模式”、“代理模式”。
行为型模式
行为型模式主要用于描述类或对象之间的通信,包括“观察者模式”、“迭代器模式”、“责任链模式”、“命令模式”、“备忘录模式”、“状态模式”、“访问者模式”、“策略模式”、“模板方法模式”、“解释器模式”。
原则
- 单一职责原则:一个类只能有一个职责。
- 开闭原则:对扩展开放,对修改关闭。
- 里氏替换原则:子类必须能够替换父类。
- 接口隔离原则:任何一个客户端只应该知道它需要的方法。
- 依赖倒置原则:高层模块不应该依赖于底层模块。
- 最少知道原则:一个类不应该知道太多关于其它类的细节。
示例
单例模式
单例模式是创建型模式的一种,它保证一个类只有一个实例。在一个多进程的 Web 服务器环境下,单例是非常有用的,因为它可以保证多个进程共享同一个对象,而不会产生竞争条件。
以下是单例模式的示例代码:
class Singleton
{
private static $instance;
private function __construct()
{
}
public static function getInstance()
{
if (!self::$instance) {
self::$instance = new self();
}
return self::$instance;
}
public function doSomething()
{
//...
}
}
$obj1 = Singleton::getInstance();
$obj2 = Singleton::getInstance();
var_dump($obj1 === $obj2); // bool(true)
工厂模式
工厂模式是创建型模式的一种,它将创建对象的代码放在一个专门的工厂类中,从而可以通过改变工厂类来改变所创建的对象。
以下是工厂模式的示例代码:
interface Product
{
public function getName();
}
class ProductA implements Product
{
public function getName()
{
return "ProductA";
}
}
class ProductB implements Product
{
public function getName()
{
return "ProductB";
}
}
class ProductFactory
{
public static function createProduct($type)
{
switch ($type) {
case "A":
return new ProductA();
case "B":
return new ProductB();
default:
throw new Exception("Invalid type");
}
}
}
$productA = ProductFactory::createProduct("A");
$productB = ProductFactory::createProduct("B");
在上面的例子中,我们先定义了一个产品接口 Product 和两个具体的产品 ProductA 和 ProductB。然后我们创建了一个工厂类 ProductFactory,它通过一个 createProduct 方法来根据传入的参数创建不同的产品。通过工厂模式,我们可以将产品的创建和客户端代码进行分离,从而更好地管理代码和降低耦合性。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:PHP设计模式概论【概念、分类、原则等】 - Python技术站