PHP設計模式 工廠設計模式

2021-08-07 07:20:22 字數 1837 閱讀 6903

工廠模式,如其名稱一樣,就是乙個工廠,用於建立產品。使用工廠模式的好處就是請求者只需要發出請求,具體的例項化過程交給工廠模式,省去了new的過程。並且如果後期開發,類名發生變化,只需要調整工廠模式中一行new相關**,不需要修改一大堆**。

最簡單的工廠模式,實際上就是乙個switch case結構,通過傳入的類名,例項化相應的類。例如:

class

dbfactory

}}echo dbfactory::make('mysql');

這樣假設,新增了資料庫支援,可以直接修改make方法即可,另外如果mysql類被修改為mariadb(都差不多), 不需要調整echo dbfactory::make('mysql');,只需要修改工廠類中的case 'mysql': return 'mariadb';

連線資料庫經常使用的就是pdo

public

function

__construct

($dsn, $username, $passwd, $options)

這是pdo的建構函式,通過對$dsn引數的判斷就可以連線不同的資料庫。但是對上一層來說,就和剛剛的簡單例項是一樣的了。

也就是不僅僅有工廠類,還有產品類,每個產品都有自己的工廠,這些工廠統一繼承自工廠的抽象基類(介面也行),而這些產品也統一繼承工廠的抽象基類(或者實現介面)。這樣建立產品以後可以直接呼叫產品的相關方法,而不是返回例項。

<?php

abstract

class

factory

}class

textfactory

extends

factory

}class

imgfactory

extends

factory

}inte***ce

product

class

textproduct

implements

product

}class

imgproduct

implements

product

}$tf = new textfactory();

$tf->domake();

$if = new imgfactory();

$if->domake();

這麼寫有乙個好處,假如我的文字和影象產品,輸出格式需要修改,只需要修改echo就好,其餘部分不需要修改。

<?php

class

factory

}inte***ce

product

class

textproduct

implements

product

}$tf = new factory();

$tf->make(new textproduct);

這樣寫,我的類只要實現了product介面,就能自動的加入工廠類中,不用擔心如何呼叫show方法。

目前大家說的比較多的三種方式

- 簡單工廠模式

- 工廠方法模式

- 抽象工廠模式

也就是factory類提供多個make方法,這些多個make方法應該是相關或者相互依賴的。

PHP設計模式 工廠模式

使用工廠模式使得在呼叫方法時變得更容易,因為它只有乙個類和乙個方法,若沒有使用工廠模式,則要在呼叫時決定應該呼叫哪個類和哪個方法 使用工廠模式還使得未來對應用程式做改變時更加容易 比如要增加一種形狀的支援,只需要修改工廠類中的create 乙個方法,而沒有使用工廠模式,則要修改呼叫形狀的 塊。定義形...

php設計模式 工廠模式,

1,工廠模式 最大的優點是 建立物件。通俗說,以前建立物件需要使用new,現在工廠模式把這個過程封裝起來了。假設不使用工廠模式 那麼很多地方呼叫類a,就會這樣子建立乙個例項 new a 假設某天需要把a類的名稱修改,意味著很多呼叫的 都要修改。工廠模式 建立乙個工廠 乙個函式,乙個方法 來製造新的物...

PHP設計模式 工廠模式

工廠模式factory method,又稱多型性工廠模式。在工廠方法模式中,核心的工廠類不再負責所有的產品的建立,而是將具體建立的工作交給子類去做。該核心類成為乙個抽象工廠角色,僅負責給出具體工廠子類必須實現的介面,而不接觸哪乙個產品類應當被例項化這種細節。1 簡單工廠模式能夠根據外界給定的資訊,決...