zoukankan      html  css  js  c++  java
  • 建造者模式

    建造者模式:将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

    建造者模式结构图:

    建造者模式结构图

    php实现:

    <?php
    class Product{
        public $part1;
        public $part2;
        public function setPart1($v){
            $this->part1 = $v;
        }
        public function setPart2($v){
            $this->part2 = $v;
        }
    }
    
    abstract class Builder{
        public abstract function BuildPart1($v);
        public abstract function BuildPart2($v);
    }
    
    class concreteBuilder extends Builder{
        private $product;
        public function __construct(){
            $this->product = new Product();
        }
        function BuildPart1($v1){
            $this->product->setPart1($v1);
        }
        function BuildPart2($v2){
            $this->product->setPart2($v2);;
        }
        function getProduct(){
            return $this->product;
        }
    }
    
    class Director{
        private $builde;
        public function __construct(){
            $this->builder = new concreteBuilder();
        }
        function getProductA(){
            $this->builder->BuildPart1("a");
            $this->builder->BuildPart2("aa");
            return $this->builder->getProduct();
        }
        function getProductB(){
            $this->builder->BuildPart1("b");
            $this->builder->BuildPart2("bb");
            return $this->builder->getProduct();
        }
    }
    
    class Client{
        function run(){
            $director = new Director();
            $productA = $director->getProductA();
            echo $productA->part1;
        }
    }
    
    Client::run();
    

      

  • 相关阅读:
    Masonry代码自动布局的简单使用。
    iOS app 如何添加引导页。
    iOS应用程序发布AppStore及更新流程
    AFN的简单二次封装
    自定义tabbar(纯代码)
    自定义tabbar(storyBoard)
    GitHub tag的使用
    cvGetSize与cvSize的区别
    越界访问,调试真的很头疼
    Hadoop对文本文件的快速全局排序
  • 原文地址:https://www.cnblogs.com/zhutianpeng/p/4238648.html
Copyright © 2011-2022 走看看