PHP最常用的2种设计模式工厂模式和单例模式介绍

yipeiwu_com6年前PHP代码库
1.工厂模式
主要作用是降低耦合度。
复制代码 代码如下:

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单例模式
单例是因为一个就足够了,多了浪费。比如邮局里的电话簿只有一本,有需要的人拿来看,没有必要每个人要查的时候工作人员就拿一本出来,看完了再回收。
复制代码 代码如下:

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();

实际中用作数据库连接类和工厂模式一起使用,根据参数调用单例模式,可以提高资源使用效率。

相关文章

最新的php 文件上传模型,支持多文件上传

复制代码 代码如下:<?php class UploadModel { protected $keys; protected $err = array(); protected $...

PHP 处理图片的类实现代码

复制代码 代码如下: <?php /** * author:yagas * email:yagas60@21cn.com */ class Image { /** 类保护变量 */...

Mac下php 5升级到php 7的步骤详解

前言 在MAC OS X 10.11中php的版本是5.5的,近来一年多里,看到了很多关于php7介绍,以为php7增加了很多新特性,也删除了原来很多的老特性,所以一直以来并没想去尝试使...

PHP下利用shell后台运行PHP脚本,并获取该脚本的Process ID的代码

复制代码 代码如下:$command = '/usr/bin/php /pub/www/u111/job/Crondo/auto_collector.php &'; $process =...

一篇入门的php Class 文章

刚在大略浏览了一下首页更新的那篇有关Class的文章(指PHPE的那篇 http://www.phpe.net/articles/389.shtml ),很不错,建议...