前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【php设计模式】建造者模式

【php设计模式】建造者模式

作者头像
码缘
发布2019-06-03 15:30:30
2860
发布2019-06-03 15:30:30
举报
文章被收录于专栏:PHP修行之路
代码语言:javascript
复制
<?php

/**
*建造者模式特点:
*    1.客户端不必知道产品内部组成的细节,将产品本身与产品的创建过程解耦,使得相同的创建过程可以创建不同的产品对象。
*    2.每一个具体建造者都相对独立,而与其他的具体建造者无关,因此可以很方便地替换具体建造者或增加新的具体建造者, *用户使用不同的具体建造者即可得到不同的产品对象 
*    3.建造者模式所创建的产品一般具有较多的共同点,其组成部分相似,如果产品之间的差异性很大,则不适合使用建造者模式
*
*角色:
*    Product(产品角色):一个具体的产品对象。 
*    Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口。 
*    ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件。 
*    Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象。它主要有两个作用,一是:隔离了客户与对象的生产过程,
*                        二是:负责控制产品对象的生产过程。
*
*示例:
*    通过建造者模式来创建不同配置的手机,用户购买手机时不需要知道手机是怎么生产出来的只要说自己要低配手机(低配建造者)还是高配手机(高配建造者)然后手机商(指挥者)去获取
*
*/


class Phone{
    public $ram;
    public $rom;
}

abstract class Builder{
    protected $phone;
    public function __construct(){
        $this->phone = new Phone;
    }
    public abstract function addRom();
    public abstract function addRam();
    public function getResult(){
        return $this->phone;
    }
}

class LowBuilder extends Builder{
    public function addRom(){
        $this->phone->rom = "4G";
    }

    public function addRam(){
        $this->phone->ram = "3G";
    }
}

class HightBuilder extends Builder{
    public function addRom(){
        $this->phone->rom = "6G";
    }

    public function addRam(){
        $this->phone->ram = "4G";
    }
}

class Shoper{
    public function __construct(Builder $builder){
        $builder->addRom();
        $builder->addRam();
    }
}

$builder = new HightBuilder();
new Shoper($builder);
var_dump($builder);

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=c33kfpax3kel

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-05-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档