1. 程式人生 > >設計模式(一)--抽象工廠模式

設計模式(一)--抽象工廠模式

依賴 紅色 藍色 種類型 一個 設計 產品族 sha 使用

工廠模式:是圍繞一個超級工廠創建其他工廠。該超級工廠又稱為其他工廠的工廠。這種類型的設計模式屬於創建型模式,它提供了一種創建對象的最佳方式。

主要解決:主要解決接口選擇的問題。

優點 :具體類的創建實例過程與客戶端分離,客戶端通過工廠的抽象接口操縱實例,客戶端並不知道具體的實現是誰。

缺點:如果產品族中需要增加新的產品,則也需要修改抽象工廠和所有的具體工廠。

抽象工廠模式的使用場景:

一個系統不依賴於產品線實例如何被創建、組合和表達的細節。

系統中有多於一個的產品線,而每次只使用其中某一產品線。

一個產品線(或是一組沒有任何關系的對象)擁有相同的約束。

實例:我們現在有這麽一個場景,要求有不同的形狀,每一種形狀有不同的顏色,比如圓形,我們要求紅色的圓形、赤橙黃綠青藍紫等各種各樣顏色的圓形。

技術分享圖片

<?php 

interface shape{
    static public function circle();
    static public function rectange();
}

class redShape implements shape{
    static public function circle(){
        return new redCircle();
    }

    static public function rectange(){
        return new redRectange();
    }
}

class blueShape implements shape{
    static public function circle(){
        return new blueCircle();
    }
    static public function rectange(){
        return new blueRectange();
    }
}
//創建實例
class blueCircle{
    public function getName(){
        echo ‘藍色圓形‘;
    }
}

$factory=blueShape::circle();
$factory->getName();

  

設計模式(一)--抽象工廠模式