工厂方法模式

使用场景:
1、项目中多处new同一个对象,当new的这个对象名称发生改变的时候需要在所有的地方进行修改,增加代码维护成本;
2、一个项目需要连接多种数据库Mysql、Oracle、MongoDB、Redeis等

代码示例:
案例1-连接不同数据库:

<?php
 
 interface DB {
    public function parseDsn();
 }

 class Mysql implements DB {
    public function parseDsn() {
        echo 'Mysql数据库';
    }
 }

 class Oracle implements DB {
    public function parseDsn() {
        echo 'Oracle数据库';
    }
 }

 class MongoDb implements DB {
    public function parseDsn() {
        echo 'MongoDb数据库';
    }
 }

 class DbConnectFactory {
     static $db = NULL; // 存储对象的值
     public static function getConnect(DB $type) { // DB是类型约束
        self::$db = new $type(); // 写活实例化的对象
        return self::$db;
     }
 }

 $dbConnect = new DbConnectFactory();
 $connect = $dbConnect -> getConnect($type = 'Mysql');
 var_dump($connect -> parseDsn());exit();

理解:
工厂模式实际上就是选择性运用实例化对象,正所谓高内聚,低耦合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值