php 抽象工厂,php抽象工厂模式

1.抽象工厂模式简介

抽象工厂是工厂方法的升级版,为相关或者相互依赖的对象提供一个接口,而且无效指定他们的具体实现类。

2.源码实现

/*抽象产品A*/

interface AbstractProductA {

public function getName();

}

/*抽象产品B*/

interface AbstractProductB {

public function getName();

}

/*具体产品A1*/

class ProductA1 implements AbstractProductA {

private $_name;

public function __construct()

{

$this->_name = 'Product A1';

}

public function getName()

{

return $this->_name;

}

}

/*具体产品A2*/

class ProductA2 implements AbstractProductA {

private $_name;

public function __construct()

{

$this->_name = 'Product A2';

}

public function getName()

{

return $this->_name;

}

}

/*具体产品B1*/

class ProductB1 implements AbstractProductB {

private $_name;

public function __construct()

{

$this->_name = 'Product B1';

}

public function getName()

{

return $this->_name;

}

}

/*具体产品B2*/

class ProductB2 implements AbstractProductB {

private $_name;

public function __construct()

{

$this->_name = 'Product B2';

}

public function getName()

{

return $this->_name;

}

}

/*抽象工厂*/

interface AbstractFactory {

public function createProductA();

public function createProductB();

}

/*具体工厂1*/

class ConcreteFactory1 implements AbstractFactory {

public function createProductA()

{

return new ProductA1();

}

public function createProductB()

{

return new ProductB1();

}

}

/*具体工厂2*/

class ConcreteFactory2 implements AbstractFactory {

public function createProductA()

{

return new ProductA2();

}

public function createProductB()

{

return new ProductB2();

}

}

/*客户端*/

class Client {

public static function main()

{

self::run(new ConcreteFactory1());

self::run(new ConcreteFactory2());

}

public static function run(AbstractFactory $factory)

{

$productA = $factory->createProductA();

$productB = $factory->createProductB();

echo $productA->getName()."\n";

echo $productB->getName()."\n";

}

}

Client::main();

?>

3.运行及其结果

$ php example.php

Product A1

Product B1

Product A2

Product B2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值