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方法进行绘制。
通过简单工厂模式,我们可以在不修改客户端代码的情况下,灵活地创建不同类型的图形对象。