php设计模式 Factory(工厂模式)

yipeiwu_com6年前PHP代码库
复制代码 代码如下:

<?php
/**
* 工厂方法模式
*
* 定义一个用于创建对象的接口,让子类决定将哪一个类实例化,使用一个类的实例化延迟到其子类
*/

/*
class DBFactory
{
public static function create($type)
{
swtich($type)
{
case "Mysql":
return new MysqlDB(); break;
case "Postgre":
return new PostgreDB(); break;
case "Mssql":
return new MssqlDB(); break;
}
}
}
*/
class DBFactory
{
public static function create($type)
{
$class = $type."DB";
return new $class;
}
}

interface DB
{
public function connect();
public function exec();
}

class MysqlDB implements DB
{
public function __construct() {
echo "mysql db<br/>";
}

public function connect() {
}

public function exec() {
}
}

class PostgreDB implements DB
{
public function __construct() {
echo "Postgre db<br/>";
}

public function connect() {
}

public function exec() {
}
}

class MssqlDB implements DB
{
public function __construct() {
echo "mssql db<br/>";
}

public function connect() {
}
public function exec() {
}
}

$oMysql = DBFactory::create("Mysql");
$oPostgre = DBFactory::create("Postgre");
$oMssql = DBFactory::create("Mssql");

相关文章

php实现源代码加密的方法

本文实例讲述了php实现源代码加密的方法。分享给大家供大家参考。具体实现方法如下: <?php function RandAbc($length=""){//返回随...

ajax缓存问题解决途径

我用PHP和Ajax结合,添加数据之后,刷新前台页面,数据没有变化。我改动PHP动态脚本,只有重新找开IE再输入地址,才能看到效果。以上这些是不是缓存的原因啊?怎么解决? ajax缓存问...

获取远程文件大小的php函数

复制代码 代码如下:<?php function getFileSize($url){ $url = parse_url($url); if($fp = @fsockopen($u...

PHP获取一段文本显示点阵宽度和高度的方法

本文实例讲述了PHP获取一段文本显示点阵宽度和高度的方法。分享给大家供大家参考。具体如下: define("F_SIZE", 8); define("F_FONT", "arial....

PHP getID3类的使用方法学习笔记【附getID3源码下载】

本文实例讲述了PHP getID3类的使用方法。分享给大家供大家参考,具体如下: 网上描述: getID3()这个PHP脚本能够从MP3或其它媒体文件中提取有用的信息如:ID3标签,bi...