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);
    
    
    ?>
  • 相关阅读:
    《增长黑客》阅读内容摘要(前三章)
    ios的安全机制
    R语言  RStudio快捷键总结
    R in action 笔记(第二部分)
    R in action 笔记(第一部分)
    R统计函数-开源
    R语言函数索引-11月
    mysql join的优化实例
    android异步消息处理机制
    android ListView与EditText共存错位
  • 原文地址:https://www.cnblogs.com/jiufen/p/4994604.html
Copyright © 2011-2022 走看看