首页 > Web开发 > 详细

PHP抽象工场模式

时间:2021-07-19 17:09:54      阅读:22      评论:0      收藏:0      [点我收藏+]
/**
 * Interface AbstractFactory 抽象工场模式
 */
//抽象工场
interface AbstractFactory{
    //创建等级结构工场方法
    public function createProductA();
    public function createProductB();
}

//具体工场1
class ConcreteFactory1 implements AbstractFactory {
    public function createProductA()
    {
        // TODO: Implement createProductA() method.
        return new ProductA1();
    }
    public function createProductB()
    {
        // TODO: Implement createProductB() method.
        return new ProductB1();
    }
}

//具体工场2

class ConcreteFactory2 implements AbstractFactory {
    public function createProductA()
    {
        // TODO: Implement createProductA() method.
        return new ProductA2();
    }
    public function createProductB()
    {
        // TODO: Implement createProductB() method.
        return new ProductB2();
    }
}

//抽象产品A
interface AbstractProductA{
    public function price();
}
//抽象产品B
interface AbstractProductB{
    public function price();
}


//具体产品A1
class ProductA1 implements AbstractProductA{
    public function price()
    {
        // TODO: Implement price() method.
        echo ‘ProductA1 价格‘;
    }
}

//具体产品A2
class ProductA2 implements AbstractProductA{
    public function price()
    {
        // TODO: Implement price() method.
        echo ‘ProductA2 价格‘;
    }
}

//具体产品B1
class ProductB1 implements AbstractProductB{
    public function price()
    {
        // TODO: Implement price() method.
        echo ‘ProductB1 价格‘;
    }
}

//具体产品B1
class ProductB2 implements AbstractProductB{
    public function price()
    {
        // TODO: Implement price() method.
        echo ‘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->price(),PHP_EOL;
        echo $productB->price(),PHP_EOL;
    }
}

Client::main();

PHP抽象工场模式

原文:https://www.cnblogs.com/whel0923/p/15030617.html

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