php的工厂模式

特点 :将调用者和创建者分离,调用者直接向工厂类请求获取调用对象,减少代码耦合,提高系统的维护性和扩展性。

<?php
// **** 共同接口 **** //
interface DB {
    function conn();
}

interface factory {
    function createDB();
}

// **** 服务端开发 **** //
class dbMysql implements DB {
    public function conn() {
        echo '连接上了 mysql 数据库!';
    }
}

class mysqlFactory implements factory {
    public function createDB() {
        return new dbMysql();
    }
}

class dbSqlite implements DB {
    public function conn() {
        echo '连接上了 sqlite 数据库!';
    }
}

class sqliteFactory implements factory {
    public function createDB() {
        return new dbSqlite();
    }
}

// 这是开发中后来增加的 oracle 数据库;
// 不需要修改上面原来的代码;
// 这就是程序的开闭原则:修改关闭,增加开放。
class dbOracle implements DB {
    public function conn() {
        echo '连接上了 oracle 数据库!';
    }
}

class oracleFactory implements factory {
    public function createDB() {
        return new dbOracle();
    }
}

// **** 客户端调用 **** //
$factory = new mysqlFactory();
$db = $factory->createDB();
$db->conn();

echo '<br>';

$factory = new sqliteFactory();
$db = $factory->createDB();
$db->conn();

echo '<br>';
// 这是开发中后来增加的 oracle 数据库连接
$factory = new oracleFactory();
$db = $factory->createDB();
$db->conn();

猜你喜欢

转载自www.cnblogs.com/qingsong/p/11503370.html
今日推荐