码迷,mamicode.com
首页 > Web开发 > 详细

php设计模式之工厂方法

时间:2020-01-11 22:04:53      阅读:76      评论:0      收藏:0      [点我收藏+]

标签:功能   htm   style   factory   方法   UNC   nts   head   text   

实现不修改原代码,扩展新功能

<?php
header("Content-type:text/html;charset=utf-8");
/**
* db接口
* 实现连接数据库函数conn
*/
 interface db
{
    function conn();
}
/**
 * 工厂接口
 * 实现创建连接函数createDb
 */
 interface factory
{
    function createDb();
}

/**
* mysql类
*/
class DbMysql implements db
{
    public function conn()
    {
        echo "连接上了mysql<br>";
    }
}

/**
* sqlite类
*/
class DbSqlite implements db
{
    public function conn()
    {
        echo "连接上了sqlite<br>";
    }
}

/**
* MysqlFactory 
*/
class MysqlFactory implements factory
{
    
    public function createDb()
    {
        return new DbMysql();
    }
}
/**
* SqliteFactory 
*/
class SqliteFactory implements factory
{
    
    public function createDb()
    {
        return new DbSqlite();
    }
}

//不修改源代码,扩展oracle数据库
/**
* oracle
*/
class DbOracle implements db
{
    public function conn()
    {
        echo "连上了oracle数据库<br>";
    }
}
/**
* oracle工厂类
*/
class OracleFactory implements factory
{
    public function createDb()
    {
        return new DbOracle();
    }
}

// 客户端调用
$factory = new MysqlFactory();
$db = $factory->createDb();
$db->conn();
$factory = new SqliteFactory();
$db = $factory->createDb();
$db->conn();

$factory = new OracleFactory();
$db = $factory->createDb();
$db->conn();

php设计模式之工厂方法

标签:功能   htm   style   factory   方法   UNC   nts   head   text   

原文地址:https://www.cnblogs.com/Mishell/p/12181149.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!