PHP设计模式之一:工厂模式(1)

本文介绍了工厂模式的概念及其在PHP中的应用,包括简单工厂模式、工厂方法模式及抽象工厂模式的特点与适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工厂模式:工厂设计模式提供获取某个对象的新实例的一个接口,同时使调用代码避免确定实际实例化基类步骤。

为什么使用工厂模式:PHP中能够创建基于变量内容的类的新实例,减少主代码流中的基于条件复杂性; 同时如果类发生改变不需要所有的地方进行修改,只需要在工厂中进行修改。

细分为以下三种

简单工厂模式:与工厂方法比较,无法适应同种产品的增加,每增加一个产品都需要在工厂中增加一个产品的方法分支,这样的工厂不仅不封闭也让我们工作量增加,不能实现我们的‘懒’,能让程序做的事情,自己就不会再做。

工厂方法模式:与简单工厂模式相比较,拥有更加灵活的可以灵活增加新的产品,但是无法再深层次的增加产品的类型,只能在同层次的增加。

抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口。与工厂方法相比更容易扩展产品的类型。

 

简单工厂:适用于生成数量少,功能简单的产品。

工厂类

Factory.php
<?php 

class Factory
{
    //实例化并返回需要的对象
    static function createMysql(){
        $db = new Mysql();
        return $db;
    }
}

小例使用

index.php

<?php 

//使用工厂模式的创建mysql对象的方法
$db = Factory::createMysql();

 其中可以在多个文件使用:index_0.php index_1.php......,但是因为都使用的是Factory类中的createMysql方法,所以当文件内容需要修改的时候,只需要更改工厂模式中的createMysql的方法

如:

实现不同的数据库的使用选择对象

index_99.php

<?php

//使用工厂模式的创建mysql对象的方法
$db = Factory::createMysql('sqlserver');

则其他文件不变,更改 Factory类的文件即可

<?php

class Factory
{
    static function createMysql($type = ''){
        if(type=='sqlserver'){
            $db = new Sqlserver();
        }else{
            $db = new Mysql();
        }
        return $db;
    }
}

当然这只是简单举例,也可以在createMysql方法中直接改变所有对象的连接数据库,这样就减少了我们后期更改的工作。

工厂模式可以任意命名这个静态还可以接受任意数据的参数,但是必须返回一个对象实例给调用对象。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值