美文网首页设计模式
设计模式 建造者模式

设计模式 建造者模式

作者: Yohann丶blog | 来源:发表于2020-06-08 15:11 被阅读0次
WechatIMG26.jpeg

介绍

shiyanlou:建造者模式又称为生成器模式,是一种对象构建模式。它可以将复杂对象的建造过程抽象出来(抽象类别),使这个抽象过程的不同实现方法可以构造出不同表现(属性)的对象。建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。

角色

角色 说明
Builder 抽象构造者类,负责创建一个 Product 对象的各个部件指定抽象接口
ConcreteBuilder 具体构造者类,实现 Builder 的接口以构造和装配该产品的各个部件
Director 指挥者类,构造一个使用 Builder 接口的对象
Product 产品类,表示被构造的复杂对象。ConcreateBuilder 创建该产品的内部表示并定义它的装配过程

角色示例

类名 担任角色 说明
CoffeeMachine Builder 抽象咖啡机类,阐述制作一杯 Coffee 所需的配料
Nespresso ConcreteBuilder 胶囊咖啡机类,提供 CoffeeMachine 的所需的配料并加以制作
Customer Director 顾客类,使用 CoffeeMachine 来制作一杯 Coffee
Coffee Product 咖啡类,使用 Nespresso 来制作一杯 Coffee</p>

UML类图

建造者模式.png

代码

<?php 
abstract class CoffeeMachine
{
    protected $coffee;
    abstract public function buildWater();
    abstract public function buildCoffeeBeans();
    abstract public function buildPaperCup();
    abstract public function getResult();
}

class Nespresso extends CoffeeMachine
{
    function __construct()
    {
        $this->coffee = new Coffee();
    }
    public function buildWater(){
        $this->coffee->setWater('水');
    }

    public function buildCoffeeBeans(){
        $this->coffee->setCoffeeBeans('咖啡豆');
    }

    public function buildPaperCup(){
        $this->coffee->setPaperCup('纸杯');
    }

    public function getResult(){
        return $this->coffee;
    }
}

class Coffee
{
    protected $water;
    protected $coffeeBeans;
    protected $paperCup;

    public function setWater($water){
        $this->water = $water;
    }

    public function setCoffeeBeans($coffeeBeans){
        $this->coffeeBeans = $coffeeBeans;
    }

    public function setPaperCup($paperCup){
        $this->paperCup = $paperCup;
    }

    public function show()
    {
        return "这杯咖啡由:".$this->water.'、'.$this->coffeeBeans.'和'.$this->paperCup.'组成';
    }
}

class Customer
{
    public $coffeeMachine;

    public function startCoffeeMachine()
    {
        $this->coffeeMachine->buildWater();
        $this->coffeeMachine->buildCoffeeBeans();
        $this->coffeeMachine->buildPaperCup();
        return $this->coffeeMachine->getResult();
    }

    public function setCoffeeMachine(CoffeeMachine $coffeeMachine)
    {
        $this->coffeeMachine = $coffeeMachine;
    }
}

$nespresso = new Nespresso();
$customer = new Customer();
$customer->setCoffeeMachine($nespresso);
$newCoffee = $customer->startCoffeeMachine();
echo $newCoffee->show();

创建 Nespresso.php,内容如上。

执行

$ php Nespresso.php
这杯咖啡由:水、咖啡豆和纸杯组成

相关文章

  • Retrofit

    Retrofit设计模式 动态代理,装饰模式,建造者模式,抽象工厂模式,适配器模式 建造者模式创建Retrofit...

  • Android中涉及的模式

    我的Java设计模式-建造者模式 我的Java设计模式-观察者模式 重学设计模式之单例模式

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 1. 模式定义 建造者模式又可以成为生成器模式,它属于对象创建型模式。建造者模式将一个复杂对...

  • java设计模式--建造者模式

    java设计模式--建造者模式 建造者模式定义 建造者模式:是将复杂对象的构建与表示进行分离,使同样的构建过程会有...

  • 【Java设计模式】--建造者模式

    建造者模式(Bulider模式) 一、什么是建造者模式 建造者模式是设计模式的一种,将一个复杂对象的构建与它的表示...

  • 建造者设计模式-Builder design pattern

    建造者设计模式是创建型设计模式的一种。创建型设计模式处理对象创建的问题。 建造者设计模式,用来构建需要经过若干个建...

  • 设计模式

    Java 设计模式情景分析 ——单例模式 Java 设计模式情景分析——建造者模式 Java 设计模式情景分析——...

  • 一篇文章搞懂设计模式

    目录 面向对象的七种设计原则建造者模式命令模式享元模式模板方法模式责任链模式建造者模式原型模式观察者模式策略模式与...

网友评论

    本文标题:设计模式 建造者模式

    本文链接:https://www.haomeiwen.com/subject/cblrtktx.html