PHP设计模式之抽象工厂模式

抽象工厂模式是:定义一个只有抽象方法的抽象类,在类中定义好所有的抽象方法名。然后创建一个个具体类继承抽象类,在具体类实现抽象类的方法的方法体。

  • 流程图:


    抽象工厂模式流程图.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;
    }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容