PHP设计模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP设计模式相关的知识,希望对你有一定的参考价值。

 
1.单例模式

 
class Danli
{
     //私有化类对象存放变量
     private static $_instance;
 
//私有化构造函数
private function __construct(){}
 
//私有化克隆函数
private function __clone(){}
 
//类实例化接口
public static function getInstance()
{
     if(!(self::$_instance instanceof self))
{
     self::$_instance = new self;
}
     return self::$_instance;
}
 
//根据用户ID,获取用户名
public function getUserName($id)
{
     //获取数据操作
     return "返回最后的数据: {$id}";
}
}
 
$Danli = Danli::getInstance();
echo $Danli->getUserName(2);
 
2.抽象工厂模式

 
//定义抽象类 . 抽象方法
abstract class CreateObj{
    abstract static function getValue($num1,$num2);
}
 
//定义加法计算类
class CalculationAdd extends CreateObj
{
    public static function getValue($num1,$num2){
        return $num1 + $num2;
    }
}
//定义乘法计算类
class CalculationSub extends CreateObj
{
    public static function getValue($num1,$num2){
        return $num1 * $num2;
    }
}
//定义总控制类 - 选择指定的对象类
class Calculation{
    public static function getClassObj($type){
        switch ($type)
        {
            case ‘+‘:
                    return new CalculationAdd();
                    break;
            case ‘*‘:
                return new CalculationSub();
                break;
        }
    }
}
 
$Calculation = Calculation::getClassObj(‘+‘);
echo $Calculation->getValue(1,3);
 
3.简单工厂模式

 
//简单工厂模式: 即静态工厂模式. 简单工程模式,是通过一个静态方法创建对象
interface CreateObj
{
    function getValue($num1,$num2);
}
 
//加法运算类
class CalculationAdd implements CreateObj
{
    function getValue($num1,$num2)
    {
        return $num1 + $num2;
    }
 
}
 
//乘法运算类
class CalculationSub implements CreateObj
{
    function getValue($num1, $num2)
    {
        return $num1 * $num2;
    }
}
 
//运算控制类
class SimpleFactory
{
    public static function CreateAdd()
    {
        return new CalculationAdd();
    }
    public static function CreateSub()
    {
        return new CalculationSub();
    }
}
 
$Add = SimpleFactory::CreateAdd();
echo $Add->getValue(1,4)."<br/>";
 
$Sub = SimpleFactory::CreateSub();
echo $Sub->getValue(2,3);
 
 

以上是关于PHP设计模式的主要内容,如果未能解决你的问题,请参考以下文章

《PHP设计模式大全》系列分享专栏

PHP——大话PHP设计模式——PSR-0规范

[php]php设计模式 (总结)

PHP——大话PHP设计模式——SPL数据结构

php设计模式

PHP教程:掌握php设计模式之访问者模式