PHP设计模式系列(八):建造者模式

本文介绍了建造者模式,一种将复杂对象构建与其表示分离的设计模式。通过建造者模式,可以逐步构建对象,用户只需指定对象类型和内容,而无需关注内部构建细节。文章包括模式结构解释、角色说明,并提供了PHP代码实现和运行结果展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

建造者模式

建造者模式(Builder Pattern):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

建造者模式是一步一步创建一个复杂的对象,它允许用户只通过指定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。根据中文翻译的不同,建造者模式又可以称为生成器模式。

模式结构

建造者模式包含如下角色:

  • Builder:抽象建造者
  • ConcreteBuilder:具体建造者
  • Director:指挥者
  • Product:产品角色

结构图

这里写图片描述

PHP代码实现

<?php
/**
 * 建造者模式
 */
//Product:产品角色
class Product
{
    public function Add($part){
        $this->parts[]=$part;
    }
    public function show(){
        var_dump('产品创建');
        foreach ($this->parts as $part){
            var_dump($part);
        }
    }
}

//Builder:抽象建造者
interface Builder
{
    public function BuildPartA();
    public function BuildPartB();
    public function GetResult();
}

//ConcreteBuilder:具体建造者
class ConcreteBuilder1 implements Builder
{
    public function __construct(){
        $this->product=new Product();
    }
    public function BuildPartA()
    {
        $this->product->Add('部件A');
    }
    public function BuildPartB()
    {
        $this->product->Add('部件B');
    }
    public function GetResult()
    {
        return $this->product;
    }
}
class ConcreteBuilder2 implements Builder
{
    public function __construct(){
        $this->product=new Product();
    }
    public function BuildPartA()
    {
        $this->product->Add('部件X');
    }
    public function BuildPartB()
    {
        $this->product->Add('部件Y');
    }
    public function GetResult()
    {
        return $this->product;
    }
}

//Director:指挥者
class Director
{
    public function Construct($builder){
        $builder->BuildPartA();
        $builder->BuildPartB();
    }
}

$a=new Director();
$b1=new ConcreteBuilder1();
$b2=new ConcreteBuilder2();

$a->Construct($b1);
$p1=$b1->GetResult();
$p1->show();

$a->Construct($b2);
$p2=$b2->GetResult();
$p2->show();

运行结果

string '产品创建' (length=12)
string '部件A' (length=7)
string '部件B' (length=7)
string '产品创建' (length=12)
string '部件X' (length=7)
string '部件Y' (length=7)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值