首頁  >  文章  >  後端開發  >  PHP設計模式:php工廠模式的介紹(附程式碼)

PHP設計模式:php工廠模式的介紹(附程式碼)

不言
不言原創
2018-08-04 14:24:351852瀏覽

這篇文章帶給大家的內容是關於PHP設計模式:php工廠模式的介紹(附程式碼),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

工廠模式是一種隱藏類別的實例化細節,並且對一系列類別使用相同的實例化方式,可以很方便的擴展更多的實現同一個介面的類別的創建物件的方式。
範例應用程式場景有:
1)線上支付
支付有多種方式,例如微信支付,支付寶支付,銀聯支付等,根據用戶的選擇而採用相應的支付方式;
2 )訪問量統計
在一個業務較複雜的專案中,使用者對不同的物件進行訪問,例如訪問文章、訪問作者、訪問文章目錄等,同樣是訪問記錄,記錄的資訊卻不一樣

工廠模式的原理:
先根據多個物件的相同行為設計一個接口,再讓這幾個類別去實現這個接口,接著製造一個實例化工廠,即可在工廠中根據不同參數實例化不同類。

工廠模式的具體實作:

/*
 *  形状接口
 */interface Shape{
    public function area();}/*
 * 长方形类,实现了形状接口
 */class Rectangle implements Shape{
    private $long;    private $width;    function __construct($long,$width)
    {
        $this->long = $long;        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return $this->long * $this->width;
    }
}/*
 * 正方形类,实现了形状接口
 */class Square implements Shape{
    private $width;    function __construct($width)
    {
        $this->width = $width;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pow($this->width,2);
    }
}/*
 * 圆形类,实现了形状接口
 */class Circle implements Shape{
    private $radiu;    function __construct($radiu)
    {
        $this->radiu = $radiu;
    }    /*
     * 实现面积方法
     */
    public function area()
    {
        // TODO: Implement area() method.
        return pi()*pow($this->radiu,2);
    }
}class ShapeFactory{
    /*
     * 获取实例化的形状对象
     * ...$args 表示接受不限个数的参数
     */
    public function getShpae(...$args)
    {
        /*
         * 第一个参数为形状名,后面的参数为形状的尺寸
         */
        switch($args[0])
        {            case 'Rectangle':                return new Rectangle($args[1],$args[2]);            break;            case 'Square':                return new Square($args[1]);            break;            case 'Circle':                return new Circle($args[1]);            break;
        }        return null;
    }
}$factory = new ShapeFactory();$shape = $factory->getShpae('Rectangle',2,3);$area[] = $shape->area();$shape = $factory->getShpae('Square',2);$area[] = $shape->area();$shape = $factory->getShpae('Circle',2);$area[] = $shape->area();
print_r($area);/*
Array
(
    [0] => 6
    [1] => 4
    [2] => 12.566370614359
)
*/

相關文章推薦:

php如何取得檔案一級目錄(純程式碼)

#php如何利用經度和緯度來計算兩點之間的距離(純程式碼)

#

以上是PHP設計模式:php工廠模式的介紹(附程式碼)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn