zoukankan      html  css  js  c++  java
  • 建造者模式(生成器模式)

    建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示。如果我们用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需知道了.

    class Bird
    {

    public $head;
    public $wing;
    public $foot;

    public function show(){

    echo '头的颜色:'.$this->head.'<br>';
    echo '翅膀的颜色:'.$this->wing.'<br>';
    echo '脚的颜色:'.$this->foot.'<br>';
    }

    }


    abstract class BirdBuilder
    {
    protected $bird;

    public function __construct()
    {
    $this->bird = new Bird();
    }

    abstract function BuildHead();
    abstract function BuildWing();
    abstract function BuildFoot();
    abstract function GetBird();


    }

    class BlueBird extends BirdBuilder
    {

    public function BuildHead()
    {
    $this->bird->head = 'Blue';
    }

    public function BuildWing()
    {
    $this->bird->wing = 'gray';
    }

    public function BuildFoot()
    {
    $this->bird->foot = 'gray';

    }

    public function GetBird()
    {
    return $this->bird;
    }

    }
    class RoseBird extends BirdBuilder
    {



    public function BuildHead()
    {
    $this->bird->head = 'Red';
    }

    public function BuildWing()
    {
    $this->bird->wing = 'gray';
    }

    public function BuildFoot()
    {
    $this->bird->foot = 'gray';

    }

    public function GetBird()
    {
    return $this->bird;
    }

    }

    class Director
    {

    public function Construct($builder)
    {
    $builder->BuildHead();
    $builder->BuildWing();
    $builder->BuildFoot();

    return $builder->GetBird();
    }

    }

    $director = new Director();
    $blueBird=$director->Construct(new BlueBird());

    $blueBird->show();

    建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式


  • 相关阅读:
    /etc/nginx/nginx.conf配置文件详解
    kvm之十二:虚拟机迁移
    KVM之十一:调整cpu和内存
    KVM之十:虚拟机在线添加网卡
    KVM之八:快照创建、恢复与删除
    KVM之七:KVM克隆
    kvm之六:配置kvm虚拟机通过VNC访问
    前端自定义 上传文件
    django 实现 导航栏的变化
    python操作腾讯对象存储 cos
  • 原文地址:https://www.cnblogs.com/paulversion/p/8430755.html
Copyright © 2011-2022 走看看