工厂方法模式
工厂方法模式
简单工厂模式违反了开闭原则还有单一职责原则,工厂方法模式是对简单工厂模式的进一步抽象。
工厂方法模式的优缺点
优点:
用户创建实例时不需要知道知道具体类,而只需要知道工厂类;
新建一个产品,只需要新建一个相应的类;
缺点:
类的个数将会越来越多;
增加系统抽象度,更加难以理解;
抽象产品只能生产一种产品。
具体代码
<?php
namespace App\Creational\Factory;
abstract class AbstractFactory
{
abstract static public function make();
}
<?php
namespace App\Creational\Factory;
class IphoneFactory extends AbstractFactory
{
static public function make(){
return new Iphone();
}
}
<?php
namespace App\Creational\Factory;
class XiaomiFactory extends AbstractFactory
{
static public function make(){
return new Xiaomi();
}
}
<?php
namespace App\Creational\Factory;
abstract class AbstractPhone
{
abstract public function playMusic();
abstract public function playVideo();
}
<?php
namespace App\Creational\Factory;
class Xiaomi extends AbstractPhone
{
public function playVideo()
{
// TODO: Implement playVideo() method.
}
public function playMusic()
{
// TODO: Implement playMusic() method.
}
}
<?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);
}
}
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: