大话设计模式第十三章---建造者模式比较

<?php
class Product {
    private $_parts = array();
    public function add(string $part) {
        $this->_parts[] = $part;
    }
    public function show() {
        echo "\n PRODUCT CREATEING...<br/>";
        foreach ($this->_parts as $part) {
            echo $part;
            echo "<br/>";
        }
    }
}

abstract class Builder {
    abstract function build_part_A();
    abstract function build_part_B();
    abstract function get_result(): Product;
}

class Concrete_builder_one extends Builder {
    private $_product = null;

    public function __construct() {
        $this->_product  = new Product();
    }
    public function build_part_A() {
        $this->_product->add(‘PART A‘);
    }
    public function build_part_B() {
        $this->_product->add(‘PART B‘);
    }
    public function get_result() : Product {
        return $this->_product;
    }
}

class Concrete_builder_two extends Builder {
    private $_product = null;

    public function __construct() {
        $this->_product  = new Product();
    }
    public function build_part_A() {
        $this->_product->add(‘PART X‘);
    }
    public function build_part_B() {
        $this->_product->add(‘PART Y‘);
    }
    public function get_result() : Product {
        return $this->_product;
    }
}

class Director {
    public function concrete(Builder $builder) {
        $builder->build_part_A();
        $builder->build_part_B();
    }
}

//CLIENT CODE
$director = new Director();
$b1 = new Concrete_builder_one();
$b2 = new Concrete_builder_two();

$director->concrete($b1);
$product1 = $b1->get_result();
$product1->show();

$director->concrete($b2);
$product2 = $b2->get_result();
$product2->show();

建造者模式:

  将一个复杂对象的构建与它的表示分离,使得同样的建造过程可以创建不同的表示。

  如果我们用了建造者模式,那么用户就只需要指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。

  Director,指挥者,它是构建一个使用Builder接口的对象。在Director中完成部件的装配(即建造过程)!!

时间: 2024-09-28 17:53:25

大话设计模式第十三章---建造者模式比较的相关文章

第十三章 建造者模式

建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及他们的装配方式时适用的模式. import java.util.LinkedList; import java.util.List; /** * Created by hero on 16-4-3. */ public class Product { private List<String> parts = new LinkedList<>(); public void add(String part) { parts

《大话设计模式》c++实现 建造者模式

建造者模式(Builder):将一个复杂对象的构建和它的表示分离,使得同样的构建过程可以创建不同的表示. 角色: (1)Builder:是为创建一个Product对象的各个部件指定的抽象接口. (2)ConcreteBuilder:是具体创建者,实现Builder接口,构造和装配各个部件. (3)Product:具体的产品角色. (4)Director:指挥者,他是构建一个使用Builder接口的对象. Q:什么时候使用建造者模式? A:它主要是用于创建一些复杂的对象,这些对象内部构造间的建造顺

大话设计模式第十三章之建造者模式

package com.build; /** * 建造胖子 * @author 黄二狗 * */ public class PersonFatBuilder { public PersonFatBuilder() { } public void build() { System.out.println("大头"); System.out.println("大腿"); System.out.println("粗腰"); } } package co

《大话设计模式》 --- 第二章 策略模式

面向对象的编程,并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的对象的抽象集合才是类. 策略模式:定义了算法,分别封装,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户. 策略模式是一种定义一系列算法的方法,从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,他可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合. 策略模式中普通算法的策略类为环境定义了一系列可供重用的算法或行为.继承有助于析出出这些算法中的公共功能.

大话设计模式第七章---代理模式模式PHP实现

<?php abstract class Subject { abstract public function request(); } class Real_subject extends Subject { public function request() { echo "真实请求"; } } class Proxy extends Subject { private $_real_subject = null; public function request() { if

设计模式之第11章-建造者模式(Java实现)

设计模式之第11章-建造者模式(Java实现) “那个餐厅我也是醉了...”“怎么了?”“上菜顺序啊,竟然先上甜品,然后是冷饮,再然后才是菜什么的,无语死了.”“这个顺序也有人这么点的啊.不过很少就是了,正常来说如果是中餐的话,都是先凉菜再热菜,然后是汤,最后是一些甜品什么的.西餐呐,先有头盘,用来开胃的,然后是汤(感觉好怪的说),再然后是副菜.主菜.蔬菜类.甜品.饮料来着.然后法国嘛就是blablabla...”(作者已被众人拖走.“让我说完啊,就剩几个国家了~啊~~”).咳咳,题归正转.你问

大话设计模式读书笔记2——策略模式

策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类直接的耦合. UML 图: 根据<大话设计模式>——第二章 商场促销这个案例代码来简单的记录一下策略模式的使用方式: /// <summary> /// 现金收费抽象类 /// </summary> public abstract class CashSuper { /// <summary> ///

大话设计模式1.0.2-----策略模式 单一职责原则 和 开放-封闭原则

大话设计模式第二章之:策略模式 算法之间可以互相调用 策略模式就是用来封装算法的. 大话设计模式第三章之:单一职责原则 单一职责原则:就一个类而言,应该仅有一个引起它变化的原因 类承担的职责不能过多,因为有时,完成一个职责,会影响到其他职责的, 手机只用来接电话,相机只用来拍照,功能才强大,集成太多了,其他功能就弱化了. 对应一些问题,要方法化,要类分离化 大话设计模式第四章之:开放-封闭原则 开放-封闭原则:是说软件实体(类.模块.函数等等)应该可以扩展,但是不可修改.OCP 扩展是开放的,修

第4章 建造者模式(Builder Pattern)

原文 第4章 建造者模式(Builder Pattern) 定义 将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式. 实用范围 1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. 2 当构造过程必须允许被构造的对象有不同表示时. 角色 在这样的设计模式中,有以下几个角色: 1 builder:为创建一个产品对象的各个部件指定抽象接口. 2 ConcreteBuilder:实现Builder的接口以构造和装配该产品的各个部