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();
    

      

  • 相关阅读:
    repeater 相关问题
    发布网站的步骤
    HTTP 错误 500.19- Internal Server Error 错误解决方法
    没有body怎么添加onload事件
    js 一搬问题汇总
    取值为四舍五入方法实现
    有关网站中操作数据库的几种方法的使用情况
    正式开始使用window live write 来更新使用博客园
    设置Oracle PL/SQL 时间显示格式 NLS_TIMESTAMP_FORMAT 2008-01-27 00:04:35:877000
    JSP 显示服务器上的文件/图片
  • 原文地址:https://www.cnblogs.com/EvanHe/p/5473525.html
Copyright © 2011-2022 走看看