美文网首页
建造者模式

建造者模式

作者: 散装咖啡 | 来源:发表于2017-05-29 12:29 被阅读4次
/* 
builder模式
    将一个复杂对象的构建与它的表示分离,使用同样的构建过程可以创建不同的表示
    使用建造者模式的好处
    1.使用建造者模式可以使客户端不必知道产品内部组成的细节。
    2.具体的建造者类之间是相互独立的,对系统的扩展非常有利。
    3.由于具体的建造者是独立的,因此可以对建造过程逐步细化,而不对其他的模块产生任何影响。

    使用建造者模式的场合:
    1.创建一些复杂的对象时,这些对象的内部组成构件间的建造顺序是稳定的,但是对象的内部组成构件面临着复杂的变化。
    2.要创建的复杂对象的算法,独立于该对象的组成部分,也独立于组成部分的装配方法时。

*/
    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 = [
        '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
    {
        public $_config = null;
        public $_object = null;
        public function __construct($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();

参考文章 https://wenku.baidu.com/view/b4c78b4702768e9951e738fb.html

相关文章

  • Builder Pattern in Java

    建造者模式:建造者模式定义建造者模式应用场景实现案例Jdk中的建造者模式建造者模式的优点建造者模式的缺点 建造者模...

  • 设计模式(4) 建造者模式

    什么是建造者模式 经典建造者模式的优缺点 对建造者模式的扩展 什么是建造者模式 建造者模式将一个复杂的对象的构建与...

  • 建造者模式(部件构造)

    目录 建造者模式的理念 从 POJO 到建造者模式的思考 怎么来实现建造者模式 建造者模式在Android源码中的...

  • 【设计模式】之建造者Builder模式

    建造者模式 什么是建造者模式? 建造者模式属于创建型模式的一员,可以控制对象的实例化过程。建造者模式简化了复杂对象...

  • 建造者模式

    一、建造者模式介绍 二、建造者模式代码实例

  • 建造者模式

    建造者模式 首先,建造者模式的封装性很好。使用建造者模式可以有效的封装变化,在使用建造者模式的场景中,一般产品类和...

  • 建造者模式:深入理解建造者模式 ——组装复杂的实例

    目录: 一 建造者模式介绍 1.1 定义 1.2 为什么要用建造者模式(优点)? 1.3 哪些情况不要用建造者模式...

  • 设计模式之建造者模式

    设计模式之建造者模式 Intro 简介 建造者模式: 建造者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加...

  • 一、设计模式(构建模式)——03建造模式与原型模式

    建造者模式 建造型模式用于创建过程稳定,但配置多变的对象。 建造模式的实现要点: 在建造者模式中,指挥者是直接与客...

  • 创建型模式:建造者模式

    个人公众号原文:创建型模式:建造者模式 五大创建型模式之四:建造者模式。 简介 姓名 :建造者模式 英文名 :Bu...

网友评论

      本文标题:建造者模式

      本文链接:https://www.haomeiwen.com/subject/cpvkfxtx.html