php设计模式之建造者模式

建造者模式

建造者模式也成生成器模式,是将一个复杂对象的构造与他的表示分离,使同样的构建过程可以创建不同的表示
创建者模式一般认为有四个角色:
1 产品角色,产品角色定义自身的组成属性
2 抽象建造者,抽象建造者定义了产品的创建过程以及如何返回一个产品
3 具体建造者,具体建造者实现了抽象建造者创建过程的方法,给产品的具体属性进行赋值定义
4 指挥者,指挥者负责与调用客户端交互,决定创建什么样的产品

例如,有不同的产品,产品的名字,颜色,大小不同呢,通过不同呢的具体建造者创建不同属性的产品

目录结构

|builder  #项目根目录
|--Think  #核心类库
|----builder.php  #抽象建造者类
|----director.php  #指挥者
|----Loder.php  #自动加载类
|----product.php  #产品角色
|----productA.php  #产品A建造者
|----productB.php  #产品B建造者
|--index.php #单一的入口文件

代码实践

产品角色,定义产品属性 Think/product.php

抽象建造者类 Think/builder.php

_product = $product;
    }

    abstract function setName();
    abstract function setSize();
    abstract function setColor();

    public function getProduct() {
        echo "产品名称:{$this->_product->name}\n";
        echo "产品尺寸:{$this->_product->size}\n";
        echo "产品颜色:{$this->_product->color}\n";
    }
}

产品A建造者 Think/productA.php

_product->name = 'A';
    }

    public function setSize() {
        $this->_product->size = '10';
    }

    public function setColor() {
        $this->_product->color = 'red';
    }
}

产品B建造者 Think/productB.php

_product->name = 'B';
    }

    public function setSize() {
        $this->_product->size = '12';
    }

    public function setColor() {
        $this->_product->color = 'blue';
    }
}

指挥者 Think/director.php

setName();
        $builder->setSize();
        $builder->setColor();
    }
}

自动加载 Think/Loder.php

index.php入口文件

show($productB);
//得到产品B
$B = $productB->getProduct();

上一篇 php设计模式之装饰器模式
下一篇 php设计模式之原型模式

你可能感兴趣的:(php设计模式之建造者模式)