黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 簡單工廠設計模式的例子

簡單工廠設計模式的例子

更新時間:2022-04-24 09:52:35 來源:動力節點 瀏覽1052次

工廠模式有三種變體:

簡單的工廠模式。 這允許在不向客戶端公開對象創建邏輯的情況下創建對象的接口。

工廠方法模式。 這允許創建對象的接口,但允許子類確定要實例化哪個類。

抽象工廠模式。 與上述兩種模式不同,抽象工廠是創建相關對象的接口,無需指定/公開它們的類。我們也可以說它提供了另一個工廠的對象,負責創建所需的對象。

問題

假設您有一個汽車類,其中包含與汽車相關的所有屬性和方法。在它的最基本形式中,您可以這樣創建它:

<font style="vertical-align: inherit;"><font style="vertical-align: inherit;">$car = 新車();</font></font>

隨著時間的推移,需要立即對 Car 對象的創建方式進行一些更改。我們需要創建基于 Cart Type 而不僅僅是 Car 的類對象。所以你需要在你創建這個 Car 類的對象的所有地方進行更改。

但是,隨著時間的推移,Car 對象的創建方式將不可避免地發生變化。例如,我們需要創建基于 Car類型的類,而不僅僅是 Car。像這樣

與其這樣做,不如創建一個實現工廠模式的類。

解決方案

在上一節中,我們認識到我們正在使用new關鍵字創建 Car 類型的對象。后來,決定創建一個 Car 類的對象,但基于 Car 類型,如 Sedan、SUV 等。

我們應該在需要時將 Car 類型類創建代碼放置在所有地方,或者實現 Factory 以有效地處理它。請參考下面的代碼塊,它顯示了簡單工廠模式的實現。

<?php<font></font>
<font></font>
class carFactory {<font></font>
<font></font>
    public function __construct() {<font></font>
        // ... //<font></font>
    }<font></font>
<font></font>
    public static function build ($type = '') {<font></font>
            <font></font>
        if($type == '') {<font></font>
            throw new Exception('Invalid Car Type.');<font></font>
        } else {<font></font>
<font></font>
            $className = 'car_'.ucfirst($type);<font></font>
<font></font>
            // Assuming Class files are already loaded using autoload concept<font></font>
            if(class_exists($className)) {<font></font>
                return new $className();<font></font>
            } else {<font></font>
                throw new Exception('Car type not found.');<font></font>
            }<font></font>
        }<font></font>
    }<font></font>
}

在上面的類中,您可以看到我們有一個可用的靜態方法,它負責根據您傳遞的類型創建對象。現在我們需要不同汽車類型的具體類,如下所示:

<?php<font></font>
<font></font>
class car_Sedan {<font></font>
    <font></font>
    public function __construct() {<font></font>
        echo "Creating Sedan";<font></font>
    }<font></font>
    <font></font>
}<font></font>
<font></font>
class car_Suv {<font></font>
<font></font>
    public function __construct() {<font></font>
        echo "Creating SUV";<font></font>
    }<font></font>
<font></font>
}

至此,我們的工廠和具體類已經可以使用了,讓我們來練習一下創建需要汽車類型的對象。

// Creating new Sedan<font></font>
$sedan = carFactory::build('sedan');<font></font>
<font></font>
// Creating new SUV<font></font>
$suv = carFactory::build('suv');

以上就是關于“簡單工廠設計模式的例子”介紹,大家如果對此比較感興趣,想了解更多的相關知識,可以關注一下動力節點的Java設計模式之工廠模式,里面有更詳細的介紹,相信對大家的學習會有所幫助的。

提交申請后,顧問老師會電話與您溝通安排學習

免費課程推薦 >>
技術文檔推薦 >>
主站蜘蛛池模板: 亚洲欧美日韩综合在线 | 一级片一级毛片 | 在线国产片 | 欧美日韩亚洲一区 | 人人澡人人澡 | 欧美三区在线观看 | 亚洲性在线观看 | 日本欧美一区二区三区在线观看 | 国产精品青青 | 国内精品视频一区二区三区 | 韩国一级做a爰片性色毛片 韩国一级黄色大片 | 日韩在线毛片 | 欧美日韩精品一区二区三区不卡 | 皮皮在线精品亚洲 | 亚州 色 图 综合 | 亚洲日本久久一区二区va | 在线观看日韩一区 | 亚州三级视频 | 国产精品久久久久久久y | 福利午夜在线 | 国产91精品一区二区麻豆网站 | 在线看片成人免费视频 | 手机看片1024精品国产 | 黄视频网址 | 免费人成在线观看网站视频 | 综合精品在线 | 国产小视频在线 | 日韩三级一区二区三区 | 欧美一区二区三区不卡免费观看 | 日韩激情在线播放 | 久久音影 | 国产高清精品自在久久 | 日本三级带日本三级带黄首页 | 国产精品一一在线观看 | 美日韩毛片 | 未满十八18勿进黄网站免费看 | 一级毛片免费观看 | 精品国产亚洲人成在线 | 毛片的网址 | 免费国产成人高清在线观看不卡 | 伦理片hd|