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

本文通过示例介绍了简单工厂、工厂方法及抽象工厂模式的区别,并详细展示了如何利用PHP实现一个工厂模式来处理不同数据库类型的连接。

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

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

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

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

 

工厂模式:适用于生成数量多,功能复杂的产品。

与简单工厂相比:业务更复杂,功能更多,但是产品族还是单个。


引用 https://blog.youkuaiyun.com/gurenshen/article/details/53997373

系统对接多个不同类型的数据库,mysql,oracle,sqlserver
<?php
//共同接口
interface db{
    public function conn();
}
/**
 *@class 服务端开发(不知道谁将会被调用)
 *
 */
class dbmysql implements db{
    public function conn() {
        echo '连接上了Mysql';
    }
}
class dbsqlite implements db{
    public function conn() {
        echo '连接上了sqlite';
    }
}

/**
 *@定义一个工厂接口 
 */
interface Factory{
    public function createDB();
}
/**
 *@实现这个接口 
 */
class mysqlFactory implements Factory{
    public function createDB() {
        return new dbmysql();
    }
}
class sqliteFactory implements Factory{
    public function createDB() {
        return new dbsqlite();
    }
}
/**
 *@新增一个oracle 
 */
class oracleFactory implements Factory{
    public function createDB() {
        return new oracle();
    }
}
class oracleDb implements db{
    public function conn() {
        echo '连接上了oracle';
    }
}

//客户端调用
$fact = new mysqlFactory();//使用一个mysql工厂造一个mysql连接
$db = $fact->createDB();
$db->conn();
$fact = new sqliteFactory();
$db = $fact->createDB();
$db->conn();
$fact = new oracleFactory();
$db = $fact->createDB();
$db->conn();

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值