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

yipeiwu_com5年前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正则替换处理HTML页面的方法

本文实例讲述了php正则替换处理HTML页面的方法。分享给大家供大家参考。具体如下: <?php if(!defined('BASEPATH')) exit('No d...

PHP微信企业号开发之回调模式开启与用法示例

本文实例讲述了PHP微信企业号开发之回调模式开启与用法。分享给大家供大家参考,具体如下: 暑假实习,领导安排开发微信企业号。在此对遇到的问题进行记录,分享给遇到同样问题的小伙伴,希望对小...

php变量与JS变量实现不通过跳转直接交互的方法

本文实例讲述了php变量与JS变量实现不通过跳转直接交互的方法。分享给大家供大家参考,具体如下: 大家都知道如果JS变量要获取后台传来的php变量可以这么写: <?ph...

php中$this-&amp;gt;含义分析

我们一般是先声明一个类,然后用这个类去实例化对象! 但是,当我们在声明这个类的时候,想在类本身内部使用本类的属性或者方法。应该怎么表示呢? 例如: 我声明一个User类!它只含有一个属性...

PHP中的命名空间相关概念浅析

1. PHP中的命名空间是什么? 什么是命名空间?“从广义上来说,命名空间是一种封装事物的方法。在很多地方都可以见到这种抽象概念。例如,在操作系统中目录用来将相关文件分组,对于目录中的文...