首页 > 其他 > 详细

工厂方法模式

时间:2020-12-31 09:42:51      阅读:38      评论:0      收藏:0      [点我收藏+]

工厂方法模式

简单工厂模式违反了开闭原则还有单一职责原则,工厂方法模式是对简单工厂模式的进一步抽象。

工厂方法模式的优缺点
优点:

  1. 用户创建实例时不需要知道知道具体类,而只需要知道工厂类;
  2. 新建一个产品,只需要新建一个相应的类;

缺点:

  1. 类的个数将会越来越多;
  2. 增加系统抽象度,更加难以理解;
  3. 抽象产品只能生产一种产品。

具体代码
AbstractFactory.php

<?php


namespace App\Creational\Factory;


abstract class AbstractFactory
{
    abstract static public function make();
}

IphoneFactory.php

<?php


namespace App\Creational\Factory;


class IphoneFactory extends AbstractFactory
{
    static public function make(){
        return new Iphone();
    }
}

XiaomiFactory.php

<?php


namespace App\Creational\Factory;


class XiaomiFactory extends AbstractFactory
{
    static public function make(){
        return new Xiaomi();
    }
}

AbstractPhone

  
<?php


namespace App\Creational\Factory;


abstract class AbstractPhone
{

    abstract public function playMusic();

    abstract public function playVideo();
}

Xiaomi.php

<?php


namespace App\Creational\Factory;


class Xiaomi extends AbstractPhone
{
    public function playVideo()
    {
        // TODO: Implement playVideo() method.
    }

    public function playMusic()
    {
        // TODO: Implement playMusic() method.
    }

}

Iphone.php

  
<?php


namespace App\Creational\Factory;


class Iphone extends AbstractPhone
{
    public function playVideo()
    {
        // TODO: Implement playVideo() method.
    }

    public function playMusic()
    {
        // TODO: Implement playMusic() method.
    }

}

测试代码

<?php

class FactoryTest extends \PHPUnit\Framework\TestCase
{
    public function testPhoneProcut()
    {
        $phone = \App\Creational\Factory\IphoneFactory::make();
        $this->assertInstanceOf(\App\Creational\Factory\Iphone::class, $phone);
    }
}

工厂方法模式

原文:https://www.cnblogs.com/ouguangqiang/p/14214227.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!