前言
设计模式一直是我的短板,经常反复的去看却很难记住,尤其是UML图经常会看的我一脸懵逼。所以在这里把一些理解的设计模式记录下来,学习不只是光靠脑补,还得动手敲一下才懂的。
简单工厂模式还是挺简单的,以下用一个计算器去表述(对不起我口头阐述真滴不行挣扎了一会光靠“说”真不知道怎么去形容,还是需要“干”一下才了解)代码可以直接复制然后慢慢打印测试。(这也是被我认为最蠢但是挺实用的 --- 开荒学习法)
<?php
//计算器类
class Calculator
{
//定义两个数值
public $a;
public $b;
}
//定义一个计算接口
interface Reckon
{
function getResult();
}
//定义加法继承于计算器
class Add extends Calculator implements Reckon
{
function getResult()
{
return $this->a + $this->b;
}
}
//定义减法继承于计算器
class Sub extends Calculator implements Reckon
{
function getResult()
{
return $this->a - $this->b;
}
}
//定义一个计算器工厂
class CalculatorFactory
{
//定义一个创建计算器的方法
public static function CreateCalculator($operation)
{
//这里可以采用switch,但是我不管我就觉得表驱动法好看QwQ
$operations = [
'+' => Add::class,
'-' => Sub::class,
];
return array_key_exists($operation, $operations) ? new $operations[$operation] : '没有这个方法';
}
}
//使用
$calculator = CalculatorFactory::CreateCalculator("+");
$calculator->a = 1;
$calculator->b = 2;
$result = $calculator->getResult();
var_dump($result);
PS:学会看UML图才是正确姿势,尤其在多种设计模式糅合在一起的时候UML图就可以直观的体现,但很不幸的是我还没到那种功力
网友评论