欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

工厂方法模式

程序员文章站 2022-03-09 16:15:55
...

使用场景:
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();

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

相关标签: 工厂方法模式