zoukankan      html  css  js  c++  java
  • 一个更加简洁的 建造者模式

    <?php
    /**
     * 建造者模式
     * 将一个复杂对象的构造与它的表示分离,是同样的构建过程可以创建不同的表示;
     * 目的是为了消除其他对象复杂的创建过程
     */
    
    /**
     * 产品,包含产品类型、价钱、颜色属性
     */
    class Product
    {
        public $_type  = null;
        public $_price = null;
        public $_color = null;
        //建造产品的类型
        public function setType($type)
        {
            echo 'set the type of the product,';
            $this->_type = $type;
        }
        //建造产品的价格
        public function setPrice($price)
        {
            echo 'set the price of the product,';
            $this->_price = $price;
        }
        //建造产品的颜色
        public function setColor($color)
        {
            echo 'set the color of the product,';
            $this->_color = $color;
        }
    }
    
    /*将要建造的,目标对象的参数*/
    $config = array
    (
        'type'  => 'shirt',
        'price' => 100,
        'color' => 'red',
    );
    
    /*不使用建造者模式*/
    $product = new Product();
    $product->setType($config['type']);
    $product->setPrice($config['price']);
    $product->setColor($config['color']);
    //var_dump($product);
    
    
    /**
     * builder类--使用建造者模式
     */
    class ProductBuilder
    {
        public $_config = null;
        public $_object = null;
    
        public function ProductBuilder($config)
        {
            $this->_object = new Product();//在这里借用具体生产过程的对象
            $this->_config = $config;
        }
    
        public function build()
        {
            echo '建造类开始工作了:';
            $this->_object->setType($this->_config['type']);
            $this->_object->setPrice($this->_config['price']);
            $this->_object->setColor($this->_config['color']);
        }
    
        public function getProduct()
        {
            return $this->_object;
        }
    }
    
    $objBuilder = new ProductBuilder($config);//新建一个建造者
    $objBuilder->build();//建造者去建造
    $objProduct = $objBuilder->getProduct();//建造者返回-它建造的东西
    
    var_dump($objProduct);
    
    
    ?>
  • 相关阅读:
    设计模式之——浅谈strategy模式(策略模式)
    设计模式之——bridge模式
    验证ip地址
    查询sqlserver数据库表的记录数
    iis网站部署常见错误
    asp.net 向后台提交 html 代码段 包括 <> 标签
    jquery花式图片库——jqFancyTransitions
    为sqlserver数据库添加专用用户名
    sqlserver 收缩数据库/文件
    你使用的ie版本过低请。。。
  • 原文地址:https://www.cnblogs.com/jiufen/p/4994604.html
Copyright © 2011-2022 走看看