PHP设计模式之简单工厂和工厂模式实例分析

1. 简单工厂模式

简单工厂模式(Simple Factory Pattern)又称为静态工厂方法(Static Factory Method)模式,是一种创建型设计模式。它提供了一个统一的接口来创建多个不同类型的对象。

简单工厂模式的核心思想是通过一个工厂类,根据传入的参数来创建不同的产品对象。简单工厂模式主要包含三个角色:

工厂类(Factory):负责创建产品对象的类,包含一个创建产品对象的方法。

抽象产品类(Product):定义产品的共性,描述了产品的方法。

具体产品类(Concrete Product):实现抽象产品类定义的方法,是工厂类创建的目标。

1.1 简单工厂模式实例分析

假设我们现在有一个简单的图形绘制程序,需要根据用户输入的不同参数,创建不同类型的图形对象。可以使用简单工厂模式来实现:

class ShapeFactory {

public static function createShape($type) {

switch ($type) {

case 'circle':

return new Circle();

case 'rectangle':

return new Rectangle();

case 'triangle':

return new Triangle();

default:

throw new InvalidArgumentException("Invalid shape type.");

}

}

}

interface Shape {

public function draw();

}

class Circle implements Shape {

public function draw() {

echo "Drawing a circle.\n";

}

}

class Rectangle implements Shape {

public function draw() {

echo "Drawing a rectangle.\n";

}

}

class Triangle implements Shape {

public function draw() {

echo "Drawing a triangle.\n";

}

}

// 使用示例

$circle = ShapeFactory::createShape('circle');

$circle->draw();

$rectangle = ShapeFactory::createShape('rectangle');

$rectangle->draw();

$triangle = ShapeFactory::createShape('triangle');

$triangle->draw();

在上述代码中,我们定义了一个ShapeFactory工厂类,其中的createShape方法可以根据传入的类型参数创建对应的图形对象。然后定义了抽象Shape接口,具体的图形类Circle、Rectangle和Triangle都实现了该接口。程序使用示例中通过ShapeFactory创建了各种类型的图形对象,并调用了draw方法进行绘制。

通过简单工厂模式,我们可以在不修改客户端代码的情况下,灵活地创建不同类型的图形对象。

后端开发标签