PHP设计模式---工厂模式

工厂模式也是最常用的设计模式之一,基本所有的框架都会利用工厂模式来实现解耦.

顾名思义,工厂模式就是一个工厂,工厂是用来生产产品的,这里以一个服装工厂为例.

<?php

class Cloth
{
    public function __construct()
    {
        echo "生产了一件衣服<br>";
    }
}
class Sweater
{
    public function __construct()
    {
        echo "生存了一件毛衣<br>";
    }
}
class Factory
{
    public static function make($product)
    {
        switch ($product){
            case 'yifu':
                return new Cloth();
            case 'maoyi':
                return new Sweater();
            default:
                echo "还没有这种产品<br>";
        }
    }
}
/*传统模式*/

//需要一件衣服
$cloth = new Cloth();
//又需要一件毛衣
$sweater = new Sweater();

/*工厂模式*/
$cloth2 = Factory::make('maoyi');
$sweator = Factory::make('sweator');

如上文,可以看到传统模式下会带来比较大的耦合, 如果Cloth类改了个名字,那么就有多处需要Cloth一同改名.

而工厂模式,依赖的是工厂出产的产品,标准化,模式化.

 

也许从这里还看不出工厂模式的优点, 当工厂模式和其他的设计模式配合使用,就会带来许多有意思的特性.

比如laravel的核心容器,就可以理解为一个超级工厂, 生产线和产品都是动态确定的.

posted @ 2017-09-07 12:31  只会写BUG  阅读(162)  评论(0编辑  收藏  举报
github