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

      

  • 相关阅读:
    tabbar 旋转指定的页面
    GDAL中文路径不能打开&Shp文件字段属性值中文乱码
    Project : error PRJ0019: 工具从"Moc'ing xxx.h..."
    详解Android中的屏幕方向
    qt中获取文件路径和文件名
    vs2005下Qt项目中修改exe图标的方法
    Qt & C/C++统计运行时间
    Qt 中Treewidget添加右键菜单
    QT 中文乱码解决方案
    Qt多线程应用QRunnable显示进度条示例
  • 原文地址:https://www.cnblogs.com/EvanHe/p/5473525.html
Copyright © 2020-2023  润新知