zoukankan      html  css  js  c++  java
  • php-建造者模式(Builder)解析

    其与抽象模式相类似,都可以创建复杂的对象,但是抽象工厂更注重多个系列的产品对象,而Builder模式则着重于一步一步的构建一个复杂的对象,在最后一步才返回产品,

    使用建造者模式的好处是:

    1.将构造代码和表示代码相分离;

    2.可以改变产品内部的表达方式

    <?php
    class Product
    {
      public$_type=null;
      public$_size=null;
      public$_color=null;
    
      public function setType($type)
      {
        echo"set product type<br/>";
        $this->_type =$type;
      }
    
      public function setSize($size)
      {
        echo"set product size<br/>";
        $this->_size =$size;
      }
    
      public function setColor($color)
      {
        echo"set product color<br/>";
        $this->_color =$color;
      }
    }
    
    $config=array(
      "type"=>"shirt",
      "size"=>"xl",
      "color"=>"red",
    );
    
    //没有使用bulider以前的处理
    $oProduct=new Product();
    $oProduct->setType($config['type']);
    $oProduct->setSize($config['size']);
    $oProduct->setColor($config['color']);
    
    //创建一个builder类
    class ProductBuilder
    {
      var$_config=null;
      var$_object=null;
    
      public function ProductBuilder($config)
      {
        $this->_object =new Product();
        $this->_config =$config;
      }
    
      public function build()
      {
        echo"--- in builder---<br/>";
        $this->_object->setType($this->_config['type']);
        $this->_object->setSize($this->_config['size']);
        $this->_object->setColor($this->_config['color']);
      }
    
      public function getProduct()
      {
        return $this->_object;
      }
    }
    
    $objBuilder=new ProductBuilder($config);
    $objBuilder->build();
    $objProduct=$objBuilder->getProduct();
    

      

  • 相关阅读:
    蓝屏代码stop:0X000000EA(0X85E286B8,0X8635F210,0XF7A53CBC,0X00000001)
    SAP HR 复制PA30的人员
    ABAP OO 开发语法整理
    ABAP制作密码输入框
    Basis 基础
    Excel 文件下载
    SAP 锁机制
    SE16传输配置表数据
    FastAdmin bootstrap-table 分页手动输入跳转
    FastAdmin 的 url 有一个 ref=addtabs 是怎么添加的?
  • 原文地址:https://www.cnblogs.com/EvanHe/p/5473525.html
Copyright © 2011-2022 走看看