当前位置:首页 > PHP

php 工厂模式 实现

2026-03-13 06:31:01PHP

工厂模式概述

工厂模式是一种创建型设计模式,用于在不暴露创建逻辑的情况下实例化对象。通过定义一个公共接口或抽象类,将对象的实例化过程委托给工厂类,实现解耦和灵活性。

php 工厂模式 实现

简单工厂模式实现

interface Product {
    public function getName();
}

class ConcreteProductA implements Product {
    public function getName() {
        return "Product A";
    }
}

class ConcreteProductB implements Product {
    public function getName() {
        return "Product B";
    }
}

class SimpleFactory {
    public function createProduct($type) {
        switch ($type) {
            case 'A':
                return new ConcreteProductA();
            case 'B':
                return new ConcreteProductB();
            default:
                throw new InvalidArgumentException("Invalid product type");
        }
    }
}

// 使用示例
$factory = new SimpleFactory();
$product = $factory->createProduct('A');
echo $product->getName(); // 输出: Product A

工厂方法模式实现

工厂方法模式通过让子类决定实例化哪个类来实现对象的创建。

php 工厂模式 实现

abstract class Creator {
    abstract public function factoryMethod(): Product;

    public function someOperation(): string {
        $product = $this->factoryMethod();
        return "Creator: " . $product->getName();
    }
}

class ConcreteCreatorA extends Creator {
    public function factoryMethod(): Product {
        return new ConcreteProductA();
    }
}

class ConcreteCreatorB extends Creator {
    public function factoryMethod(): Product {
        return new ConcreteProductB();
    }
}

// 使用示例
$creator = new ConcreteCreatorA();
echo $creator->someOperation(); // 输出: Creator: Product A

抽象工厂模式实现

抽象工厂模式提供一个创建一系列相关或依赖对象的接口,而无需指定具体类。

interface AbstractFactory {
    public function createProductA(): ProductA;
    public function createProductB(): ProductB;
}

class ConcreteFactory1 implements AbstractFactory {
    public function createProductA(): ProductA {
        return new ConcreteProductA1();
    }
    public function createProductB(): ProductB {
        return new ConcreteProductB1();
    }
}

class ConcreteFactory2 implements AbstractFactory {
    public function createProductA(): ProductA {
        return new ConcreteProductA2();
    }
    public function createProductB(): ProductB {
        return new ConcreteProductB2();
    }
}

// 使用示例
$factory = new ConcreteFactory1();
$productA = $factory->createProductA();
$productB = $factory->createProductB();

适用场景

工厂模式适用于需要灵活创建对象的场景,特别是当对象创建过程复杂或需要根据条件动态决定创建哪种对象时。通过工厂模式可以提高代码的可维护性和扩展性,降低客户端与具体实现类之间的耦合度。

标签: 工厂模式
分享给朋友:

相关文章

react实现mvvm模式

react实现mvvm模式

React 实现 MVVM 模式的方法 MVVM(Model-View-ViewModel)是一种前端架构模式,通过数据绑定实现视图与逻辑的分离。React 本身基于单向数据流设计,但可以通过以下方式…

php怎么实现单例模式

php怎么实现单例模式

单例模式的基本概念 单例模式确保一个类只有一个实例,并提供一个全局访问点。适用于需要频繁创建和销毁的对象,或控制资源访问的场景(如数据库连接、日志管理等)。 PHP 单例模式的实现步骤 私有化构…

php调试模式实现

php调试模式实现

PHP调试模式实现方法 开启PHP调试模式可以帮助开发者在开发过程中快速定位和解决问题。以下是几种常见的实现方法: 使用ini_set函数动态开启 在PHP脚本中动态开启错误报告和显示错误: in…

js 实现单例模式

js 实现单例模式

使用闭包实现单例模式 闭包可以封装私有变量,确保实例唯一性。通过立即执行函数返回一个获取实例的方法,首次调用时创建实例,后续调用直接返回已创建的实例。 const Singleton = (func…

php实现单例模式

php实现单例模式

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供全局访问点。适用于需要全局唯一对象的场景,如数据库连接、日志管理等。 PHP实现单例模式的核心步骤 私有化构造函数 防…

php怎么实现单例模式

php怎么实现单例模式

单例模式的基本概念 单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。在PHP中,单例模式常用于数据库连接、日志记录器等需要全局唯一实例的场景。 实现单例模式的步骤 私有化…