PHP工厂模式实战:从普通到抽象的构建技巧

云舒
云舒
发布时间:2026-10-16| 4人浏览过
原创

工厂模式是PHP面向对象编程中常用的设计模式,旨在将对象的创建过程封装起来。本文通过两段核心代码示例,详细演示了普通工厂模式与抽象工厂模式的具体实现方法及其应用场景。

什么是工厂模式

工厂模式的核心思想是定义一个创建对象的接口,但由子类决定实例化哪一个类。这种模式使得一个类的实例化延迟到其子类进行。简单来说,它就像是一个加工厂,你不需要关心产品是如何制造的,只需要告诉工厂你想要什么产品即可。

普通工厂模式示例

普通工厂模式适用于创建一个具体类型的对象。以下是其基本结构:

<?php
abstract class model { // 产品模型
    abstract function getNames();
}

class zhangsan extends model { // 产品实例
    function getNames(){
        return "my name is zhengsan";
    }
}

class lisi extends model { // 产品实例
    function getNames(){
        return "my name is lisi";
    }
}

abstract class gongchangModel { // 工厂模型
    abstract function getZhangsan();
    abstract function getLisi();
}

class gongchang extends gongchangModel { // 工厂实例
    function getZhangsan() {
        return new zhangsan();
    }
    function getLisi() {
        return new lisi();
    }
}

$gongchang = new gongchang(); // 实例化工厂
$zhangsan = $gongchang->getZhangsan(); // 制造产品
echo $zhangsan->getNames(); // 产品输出功能
?>

第1步:定义产品模型(抽象类)

目的:规定所有具体产品必须实现的方法。在上面的代码中,model 类规定了 getNames() 方法必须存在。

第2步:实现具体产品实例

入口:具体的业务逻辑类。
动作:继承产品模型并实现具体方法。
参数:zhangsan 和 lisi 类分别返回各自的名称字符串。

第3步:创建工厂

目的:统一管理产品的创建。
动作:通过工厂类调用相应的方法获取产品实例。
结果:用户无需知道具体的产品实现类,只需调用工厂方法即可。

简化版工厂模式示例

在实际开发中,为了追求简洁,有时会使用更轻量级的工厂模式。以下是一个简化的例子:

<?php
abstract class prModel { // 产品模型
    abstract function link();
}

class webLink extends prModel { // 实例一个产品
    public function link() {
        echo "www.jb51.net";
    }
}

class gongchang { // 工厂
    static public function createLink () {
        return new webLink();
    }
}

$weblink = gongchang::createLink(); // 通过工厂制造一个对象
$weblink->link(); // 输出 www.jb51.net
?>

这个例子展示了单一大厂的简单用法。它省去了复杂的抽象工厂层级,直接通过静态方法返回对象实例。这种方式适合只针对单一产品线或类型较少的场景。

总结

工厂模式通过封装对象的创建过程,降低了系统的耦合度。在实际应用中,开发者可以根据业务复杂度选择普通工厂模式或抽象工厂模式。正确运用工厂模式,可以让你的PHP代码更加清晰、易于维护和扩展。

以上就是PHP高级对象构建工厂模式的使用方法的详细内容,更多关于PHP工厂模式与设计的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。