抽象工厂模式是:定义一个只有抽象方法的抽象类,在类中定义好所有的抽象方法名。然后创建一个个具体类继承抽象类,在具体类实现抽象类的方法的方法体。
-
流程图:
抽象工厂模式流程图.png 具体Demo:
一、定义一个抽象类: AbstractFactory
<?php
namespace App\Http\Controllers\Factory;
abstract class AbstractFactory
{
/**
* 创建文本
*
* @param string $content
* @return mixed
*/
abstract public function createText($content);
/**
* 创建图片
*
* @param string $path
* @param string $name
* @return mixed
*/
abstract public function createPic($path, $name);
}
二、定义具体类实现上面的抽象方法:
- 如类1:JsonFactory
<?php
namespace App\Http\Controllers\Factory;
class JsonFactory extends AbstractFactory
{
public function createText($content)
{
$data['content'] = $content;
return json_encode($data);
}
public function createPic($path, $name)
{
$data['name'] = $name;
$data['path'] = $path;
return json_encode($data);
}
}
- 如类2:
<?php
namespace App\Http\Controllers\Factory;
class HtmlFactory extends AbstractFactory
{
/**
* HTML 格式输出的文本
*
* @param string $content
* @return mixed|string
*/
public function createText($content)
{
$str = '<div>' .htmlspecialchars($content).'</div>';
return $str;
}
/**
* HTML 格式输出的图片
*
* @param string $path
* @param string $name
* @return mixed|string
*/
public function createPic($path, $name)
{
$str = sprintf('<img src="%s" title="%s">', $path, $name);
return $str;
}
}