程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> PHP設計模式——建造者模式

PHP設計模式——建造者模式

編輯:關於PHP編程

PHP設計模式——建造者模式


 

建造者模式也稱生成器模式,核心思想是將一個復雜對象的構造與它的表示分離,使同樣的構建過程可以創建不同的表示,這樣的設計模式被稱為建造者模式。

 

例如:汽車,他的發動機引擎有好多品牌,輪胎也有各種材質,內飾更是千奇百怪;鳥,他的頭、翅膀以及腳有各種顏色和形狀,在創建這種復雜對象的時候,我們建議使用建造者模式。

 

類圖:

\

 

建造者模式一般認為有四個角色:

1.產品角色,產品角色定義自身的組成屬性

2.抽象建造者,抽象建造者定義了產品的創建過程以及如何返回一個產品

3.具體建造者,具體建造者實現了抽象建造者創建產品過程的方法,給產品的具體屬性進行賦值定義

4.指揮者,指揮者負責與調用客戶端交互,決定創建什麼樣的產品

 

代碼:

 

_head}
;
        echo 翅膀的顏色:{$this->_wing}
;
        echo 腳的顏色:{$this->_foot}
;
    }
}

/**抽象鳥的建造者(生成器)
 * Class BirdBuilder
 */
abstract class BirdBuilder
{
    protected $_bird;

    function __construct()
    {
        $this->_bird=new Bird();
    }

    abstract function BuildHead();
    abstract function BuildWing();
    abstract function BuildFoot();
    abstract function GetBird();
}

/**具體鳥的建造者(生成器)   藍鳥
 * Class BlueBird
 */
class BlueBird extends BirdBuilder
{

    function BuildHead()
    {
        // TODO: Implement BuilderHead() method.
        $this->_bird->_head=Blue;
    }

    function BuildWing()
    {
        // TODO: Implement BuilderWing() method.
        $this->_bird->_wing=Blue;
    }

    function BuildFoot()
    {
        // TODO: Implement BuilderFoot() method.
        $this->_bird->_foot=Blue;
    }

    function GetBird()
    {
        // TODO: Implement GetBird() method.
        return $this->_bird;
    }
}

/**玫瑰鳥
 * Class RoseBird
 */
class RoseBird extends BirdBuilder
{

    function BuildHead()
    {
        // TODO: Implement BuildHead() method.
        $this->_bird->_head=Red;
    }

    function BuildWing()
    {
        // TODO: Implement BuildWing() method.
        $this->_bird->_wing=Black;
    }

    function BuildFoot()
    {
        // TODO: Implement BuildFoot() method.
        $this->_bird->_foot=Green;
    }

    function GetBird()
    {
        // TODO: Implement GetBird() method.
        return $this->_bird;
    }
}

/**指揮者
 * Class Director
 */
class Director
{
    /**
     * @param $_builder      建造者
     * @return mixed         產品類:鳥
     */
    function Construct($_builder)
    {
        $_builder->BuildHead();
        $_builder->BuildWing();
        $_builder->BuildFoot();
        return $_builder->GetBird();
    }
}

調用客戶端測試代碼:

 

 

header(Content-Type:text/html;charset=utf-8);
//------------------------生成器模式測試代碼------------------
require_once ./Builder/Builder.php;

$director=new Director();

echo 藍鳥的組成:

; $blue_bird=$director->Construct(new BlueBird()); $blue_bird->Show(); echo
Rose鳥的組成:
; $rose_bird=$director->Construct(new RoseBird()); $rose_bird->Show();
PHP面向對象設計模式

 

 

 

 

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved