创建模式-构造者/生成器模式(Builder)

生成器模式,又称构造者模式,用于分离复杂对象的构建和表示,通过同样的构建过程创建不同的表示。实现基本部件不变,组合方式改变。

举个例子,杯子由杯身和杯盖组成,有的杯盖是玻璃的,有的是陶瓷的。首先构造cover父类,及两个继承类。创建cupbody类。

class cover{
    protected $type;
    public function toString(){
        return $this->type.' cup.<br>';
    }
}
class glassCover extends cover{
    function __construct(){
       $this->type='glass';
   }
}
class chinaCover extends cover{
    function __construct(){
        $this->type='china';
    }
}

class cupbody{
    public function toString(){
        return 'cupbody<br>';
    }
}

创建cup类,和相应的builder类。

class cup{
    private $cover;
    private $body;
    public function setCover($cover){
        $this->cover = $cover;
    }
    public function setBody($body){
        $this->body = $body;
    }
    public function toString(){
        echo 'cover: '.$this->cover->toString();
        echo 'body: '.$this->body->toString();
    }
}
class cupBuilder{
    public function cupWithGlassCover(){
       $cup = new cup();
       $cup->setCover(new glassCover());
       $cup->setBody(new cupbody());
       return $cup;
    }
    public function cupWithChinaCover(){
        $cup = new cup();
        $cup->setCover(new chinaCover());
        $cup->setBody(new cupbody());
        return $cup;
    }
}
//测试
$cupBuilder = new cupBuilder();
$cup = $cupBuilder->cupWithChinaCover();
$cup->toString();

通常情况下,由具体生成器生成的产品,表示差异较大,无需公共父类。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值