您好,欢迎访问一九零五行业门户网

php中设计模式工厂模式和单例模式实例_PHP教程

php中设计模式工厂模式和单例模式实例,有需要的朋友可参考一下。
1.工厂模式
工厂模式 是一种类,它具有为您创建对象的某些方法。您可以使用工厂类创建对象,而不直接使用 new。这样,如果您想要更改所创建的对象类型,只需更改该工厂即可。使用该工厂的所有代码会自动更改。
主要作用是降低耦合度。
代码如下 复制代码
abstract class operation{
    abstract public  function getvalue($num1,$num2);
    public  function getattr(){
        return 1;
    }
}
class add extends operation{
    public function getvalue($num1, $num2){       
        return $num1+$num2;
    }
}
class sub extends operation{
    public function getvalue($num1, $num2){
        return $num1-$num2;
    }
}
class factory{
    public static function createobj($operation){
switch ($operation){
            case '+': return new add();
            case '-': return new sub();
        }
}
}
$op=factory::createobj('-');
echo $op->getvalue(3, 6);
用在真正开发中一般当做数据库选择类。
实例2 显示使用工厂方法的一个示例。
 代码如下 复制代码
getname().n );
?>
这段代码要简单得多。它仅有一个接口 iuser 和一个实现此接口的 user 类。user 类有两个创建对象的静态方法。此关系可用图 2 中的 uml 表示
php里通过工厂模式提高效率
我们建立以下四个文件
 代码如下 复制代码
index.php
create('t1');
echo $t1->getname();
echo $config;
?>
f.inc.php
mclasses=array('t1'=>'t1.inc.php','t2'=>'t2.inc.php');
 }
 function &create($class)
 {
  if (!class_exists($class))
  {
   require_once($this->mclasses[$class]);
  }
  return new $class;
 }
}
?>
t1.inc.php
mname;
 }
}
?>
t2.inc.php
在index.php里,我们通过一个factory类来创建其他的类实例。
在factory里,保存有一个数组$this->mclasses,格式为array(“类名”=>”类文件路径”).
我们通过factory::create()来创建一个类实例的时候,在create()里,会首先检测类是否存在,如果不存在,就根据$this->mclasses把类对应的类文件包含进来。然后创建并返回一个该类的实例。
这样,我们只需要把factory类文件包含进执行的脚本(如index.php)中就可以了。
大家可能还注意到了在t1.inc.php中的这两行代码。
 代码如下 复制代码
global $config;
$config='surfchen';
2单例模式
简单来说,php单例模式就是一个功能用一个类来实现,并且在整个应用程序当中只有一个这个类的实例存在;
   工厂模式强调的是面向对象的多态性,它可以把功能上的差异部分封装起来,对外实现共有的功能,比如说数据库的链接,由于数据库的不同,我们可能需要写不同的方法去实现数据库的链接,但作为应用程序来讲,它不需要了解数据库用的是mysql还是oracle,它只需要用query()这个方法去执行数据库的相应操作即可。这样就屏蔽了差异,使类更加健壮!
 代码如下 复制代码
class mysql{
    public static $conn;
    public static function getinstance(){
        if (!self::$conn){
            new self();
            return self::$conn;
        }else {
            return self::$conn;
        }
}
    private  function __construct(){   
        self::$conn=  mysql_connect:;//    mysql_connect('','','')   
    }
public function __clone()
    {
        trigger_error(only one connection);
    }
}
echo mysql::getinstance();
echo mysql::getinstance();
实际中用作数据库连接类和工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率
http://www.bkjia.com/phpjc/631278.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/631278.htmltecharticlephp中设计模式工厂模式和单例模式实例,有需要的朋友可参考一下。 1.工厂模式 工厂模式 是一种类,它具有为您创建对象的某些方法。您可...
其它类似信息

推荐信息