大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 hot資訊 簡單工廠設(shè)計(jì)模式的例子

簡單工廠設(shè)計(jì)模式的例子

更新時(shí)間:2022-04-24 09:52:35 來源:動(dòng)力節(jié)點(diǎn) 瀏覽941次

工廠模式有三種變體:

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

工廠方法模式。 這允許創(chuàng)建對(duì)象的接口,但允許子類確定要實(shí)例化哪個(gè)類。

抽象工廠模式。 與上述兩種模式不同,抽象工廠是創(chuàng)建相關(guān)對(duì)象的接口,無需指定/公開它們的類。我們也可以說它提供了另一個(gè)工廠的對(duì)象,負(fù)責(zé)創(chuàng)建所需的對(duì)象。

問題

假設(shè)您有一個(gè)汽車類,其中包含與汽車相關(guān)的所有屬性和方法。在它的最基本形式中,您可以這樣創(chuàng)建它:

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

隨著時(shí)間的推移,需要立即對(duì) Car 對(duì)象的創(chuàng)建方式進(jìn)行一些更改。我們需要?jiǎng)?chuàng)建基于 Cart Type 而不僅僅是 Car 的類對(duì)象。所以你需要在你創(chuàng)建這個(gè) Car 類的對(duì)象的所有地方進(jìn)行更改。

但是,隨著時(shí)間的推移,Car 對(duì)象的創(chuàng)建方式將不可避免地發(fā)生變化。例如,我們需要?jiǎng)?chuàng)建基于 Car類型的類,而不僅僅是 Car。像這樣

與其這樣做,不如創(chuàng)建一個(gè)實(shí)現(xiàn)工廠模式的類。

解決方案

在上一節(jié)中,我們認(rèn)識(shí)到我們正在使用new關(guān)鍵字創(chuàng)建 Car 類型的對(duì)象。后來,決定創(chuàng)建一個(gè) Car 類的對(duì)象,但基于 Car 類型,如 Sedan、SUV 等。

我們應(yīng)該在需要時(shí)將 Car 類型類創(chuàng)建代碼放置在所有地方,或者實(shí)現(xiàn) Factory 以有效地處理它。請(qǐng)參考下面的代碼塊,它顯示了簡單工廠模式的實(shí)現(xiàn)。

<?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>
}

在上面的類中,您可以看到我們有一個(gè)可用的靜態(tài)方法,它負(fù)責(zé)根據(jù)您傳遞的類型創(chuàng)建對(duì)象。現(xiàn)在我們需要不同汽車類型的具體類,如下所示:

<?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>
}

至此,我們的工廠和具體類已經(jīng)可以使用了,讓我們來練習(xí)一下創(chuàng)建需要汽車類型的對(duì)象。

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

以上就是關(guān)于“簡單工廠設(shè)計(jì)模式的例子”介紹,大家如果對(duì)此比較感興趣,想了解更多的相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java設(shè)計(jì)模式之工廠模式,里面有更詳細(xì)的介紹,相信對(duì)大家的學(xué)習(xí)會(huì)有所幫助的。

提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 在线亚洲精品国产波多野结衣 | a加勒比一本东京 | 精品一区二区三区免费视频 | 精品成人毛片一区二区视 | 久久99热精品免费观看无卡顿 | 久久久窝窝午夜精品 | 日本精品久久久一区二区三区 | 99国产精品九九视频免费看 | 在线观看麻豆精品国产不卡 | 久久久久爽亚洲精品 | 欧美一级爱爱视频 | 18在线观看 | 国产美女久久精品香蕉69 | 国产麻豆视频在线看网站 | 久久久综合九色合综国产 | 天天躁日日躁成人字幕aⅴ 天天躁日日躁狠狠躁黑人躁 | 久久毛片免费 | 日韩女人做爰大片 | 久久天天躁日日躁狠狠躁 | 日本特黄在线观看免费 | 日韩亚洲综合精品国产 | 日本欧美日韩 | 波多野结衣国产精品 | 欧美seav在线 | 成人影院免费在线观看 | 国产亚洲精品看片在线观看 | 亚州综合激情另类久久久 | 日本在线看片网站 | 在线欧美| 久久精品天天中文字幕人 | 欧美精品综合 | 色插综合| 成人精品一区二区不卡视频 | 热99精品视频 | 一级特级aa欧美毛片 | 亚洲不卡在线 | 国产露脸系列magnet | 欧美日韩亚洲国产一区二区综合 | 国产福利第一页 | 日本成人毛片 | 成人精品一区二区激情 |