国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

[設(shè)計(jì)模式]創(chuàng)建型模式-簡(jiǎn)單工廠模式

這篇具有很好參考價(jià)值的文章主要介紹了[設(shè)計(jì)模式]創(chuàng)建型模式-簡(jiǎn)單工廠模式。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

簡(jiǎn)介

簡(jiǎn)單工廠模式又稱為靜態(tài)工廠模式,屬于創(chuàng)建型模式,但不屬于GOF23設(shè)計(jì)模式。由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。簡(jiǎn)單工廠模式的實(shí)質(zhì)是由一個(gè)工廠類根據(jù)傳入的參數(shù),動(dòng)態(tài)決定應(yīng)該創(chuàng)建哪一個(gè)產(chǎn)品類。

簡(jiǎn)單工廠適用場(chǎng)景:工廠類負(fù)責(zé)創(chuàng)建的對(duì)象比較少;客戶端只需要知道傳入工廠類的參數(shù),對(duì)于如何創(chuàng)建對(duì)象的邏輯并不關(guān)心。

簡(jiǎn)單工廠優(yōu)缺點(diǎn):

  • 優(yōu)點(diǎn):只需要傳入一個(gè)正確的參數(shù),就可以獲取你所需要的對(duì)象,而無(wú)需知道其細(xì)節(jié)創(chuàng)建。
  • 缺點(diǎn):工廠類的職責(zé)相對(duì)過重,增加新的產(chǎn)品,需要修改工廠類的判斷邏輯,違背了開閉原則。

示例代碼

Go

go語(yǔ)言沒有構(gòu)造函數(shù),所以一般會(huì)定義NewXXX函數(shù)來(lái)初始化相關(guān)類。NewXXX函數(shù)返回接口時(shí)就是簡(jiǎn)單工廠模式,也就是說Go的一般推薦做法就是簡(jiǎn)單工廠,

simplefactory/demo.go

package simplefactory

import "fmt"

type API interface {
	Say(name string) string
}

func NewAPI(t int) API {
	if t == 1 {
		return &hiAPI{}
	} else if t == 2 {
		return &helloAPI{}
	}
	return nil
}

type hiAPI struct{}

func (*hiAPI) Say(name string) string {
	return fmt.Sprintf("hi, %s", name)
}

type helloAPI struct {}

func (*helloAPI) Say(name string) string {
	return fmt.Sprintf("hello, %s", name)
}

單元測(cè)試:simplefactory/demo_test.go

package simplefactory

import (
	"testing"
)

func TestType1(t *testing.T) {
	api := NewAPI(1)
	s := api.Say("zhangsan")
	if s != "hi, zhangsan" {
		t.Error("test failed")
	}
}

func TestType2(t *testing.T) {
	api := NewAPI(2)
	s := api.Say("zhangsan")
	if s != "hello, zhangsan" {
		t.Error("test failed")
	}
}

主方法調(diào)用 main.go文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-831262.html

package main

import (
	"fmt"
	"tmpgo/simplefactory"
)


func main() {
	api := simplefactory.NewAPI(1)
	fmt.Println(api.Say("zhangsan"))
}

Python

class GreetAPI:
    def Say(self, name):
        pass

class HiAPI(GreetAPI):
    def Say(self, name):
        return f"Hi, {name}"
    
class helloAPI(GreetAPI):
    def Say(self, name):
        return f"Hello, {name}"
    
def NewGreetAPI(t: int):
    if t == 1:
        return HiAPI()
    elif t == 2:
        return helloAPI()
    else:
        raise Exception(f"Unknown type: {t}")

if __name__ == "__main__":
    api = NewGreetAPI(2)
    print(api.Say("zhangsan"))

參考

  • 博客園 - kasamino - 設(shè)計(jì)模式之工廠模式

到了這里,關(guān)于[設(shè)計(jì)模式]創(chuàng)建型模式-簡(jiǎn)單工廠模式的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • C++面試:?jiǎn)卫J?、工廠模式等簡(jiǎn)單的設(shè)計(jì)模式 & 創(chuàng)建型、結(jié)構(gòu)型、行為型設(shè)計(jì)模式的應(yīng)用技巧

    ????????理解和能夠?qū)崿F(xiàn)基本的設(shè)計(jì)模式是非常重要的。這里,我們將探討兩種常見的設(shè)計(jì)模式:?jiǎn)卫J胶凸S模式,并提供一些面試準(zhǔn)備的建議。 目錄 單例模式 (Singleton Pattern) 工廠模式 (Factory Pattern) 面試準(zhǔn)備? 1. 理解設(shè)計(jì)模式的基本概念 2. 掌握實(shí)現(xiàn)細(xì)節(jié) 3. 討論優(yōu)缺

    2024年02月01日
    瀏覽(21)
  • 自學(xué)設(shè)計(jì)模式(簡(jiǎn)單工廠模式、工廠模式、抽象工廠模式)

    使用工廠模式來(lái)生產(chǎn)某類對(duì)象(代碼簡(jiǎn)化且容易維護(hù),類之間有血緣關(guān)系,可以通過工廠類進(jìn)行生產(chǎn)); 簡(jiǎn)單工廠模式(用于創(chuàng)建簡(jiǎn)單對(duì)象) 對(duì)于簡(jiǎn)單工廠模式,需要的工廠類只有一個(gè); 在工廠類中的公共成員函數(shù)來(lái)創(chuàng)建所需對(duì)象; 工廠模式 簡(jiǎn)單工廠模式會(huì)違反開放封閉

    2024年02月11日
    瀏覽(27)
  • 設(shè)計(jì)模式(二)、工廠模式--簡(jiǎn)單工廠模式

    簡(jiǎn)單工廠模式:又叫做靜態(tài)工廠方法模式,是由一個(gè)工廠對(duì)象決定創(chuàng)建出哪一種產(chǎn)品類的實(shí)例。 需要注意的是:簡(jiǎn)單工廠模式屬于創(chuàng)建型模式,但不屬于23種GOF設(shè)計(jì)模式之一? 該模式主要有以下幾個(gè)模塊構(gòu)成: 具體說明結(jié)合代碼,如下: 代碼中主要是有一個(gè)cake接父類,兩個(gè)

    2024年02月13日
    瀏覽(22)
  • 設(shè)計(jì)模式-簡(jiǎn)單工廠模式(靜態(tài)工廠模式)java實(shí)現(xiàn)

    設(shè)計(jì)模式-簡(jiǎn)單工廠模式(靜態(tài)工廠模式)java實(shí)現(xiàn)

    簡(jiǎn)單工廠模式根據(jù)所 提供的參數(shù) 數(shù)據(jù)返回幾個(gè)可能類中的一個(gè)類的實(shí)例。通常返回的類都有一個(gè)公共的父類和公共的方法。 ? 意圖 提供一個(gè)類,負(fù)責(zé)根據(jù)一定的條件創(chuàng)建某一具體類的實(shí)例。同時(shí)使用工廠模式也是為了隱藏創(chuàng)建對(duì)象的過程 角色及其職責(zé) (1)工廠(Creator)角色

    2024年02月13日
    瀏覽(29)
  • 【創(chuàng)建型設(shè)計(jì)模式】C#設(shè)計(jì)模式之工廠模式,以及通過反射實(shí)現(xiàn)動(dòng)態(tài)工廠。

    題目如下: 簡(jiǎn)單工廠實(shí)現(xiàn): 上述代碼給出了抽象基類的基本定義,和泛型工廠的實(shí)現(xiàn)方式,以及調(diào)用方式。 值得注意的是 where T : Car, new() 這個(gè)條件: where T : Car, new() 是對(duì)泛型類型參數(shù) T 的約束。這個(gè)約束表明泛型類型參數(shù) T 必須滿足兩個(gè)條件: T 必須是 Car 類或者其派生類

    2024年02月11日
    瀏覽(19)
  • 設(shè)計(jì)模式-創(chuàng)建型模式-抽象工廠模式

    設(shè)計(jì)模式-創(chuàng)建型模式-抽象工廠模式

    抽象工廠模式(Abstract Factory Pattern):提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)須指定它們具體的類。抽象工廠模式又稱為Kit模式,它是一種對(duì)象創(chuàng)建型模式。 由于工廠方法模式中的每個(gè)工廠只生產(chǎn)一類產(chǎn)品,可能會(huì)導(dǎo)致系統(tǒng)中存在大量的工廠類,勢(shì)必會(huì)增加系

    2024年02月22日
    瀏覽(28)
  • 設(shè)計(jì)模式-創(chuàng)建型模式-工廠方法模式

    工廠方法模式(Factory Method Pattern):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類決定將哪一個(gè)類實(shí)例化。工廠方法模式讓一個(gè)類的實(shí)例化延遲到其子類。工廠方法模式又簡(jiǎn)稱為工廠模式(Factory Pattern),又可稱作虛擬構(gòu)造器模式(Virtual Constructor Pattern)或多態(tài)工廠模式(Polymorp

    2024年02月22日
    瀏覽(25)
  • [設(shè)計(jì)模式]創(chuàng)建型模式-抽象工廠模式

    抽象工廠模式是一種創(chuàng)建型設(shè)計(jì)模式,它提供了一種創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無(wú)需指定它們具體的類。抽象工廠模式將一組具有共同主題的單個(gè)工廠封裝起來(lái),它提供接口用于創(chuàng)建相關(guān)或依賴對(duì)象的家族,而不需要指定具體的類。 抽象工廠模式包含以下幾個(gè)

    2024年03月08日
    瀏覽(18)
  • 【設(shè)計(jì)模式】簡(jiǎn)單工廠模式

    【設(shè)計(jì)模式】簡(jiǎn)單工廠模式

    分析: 這一題看上去很簡(jiǎn)單,但如果面試時(shí)你寫的是下面這種代碼,那大概率是過不了的。 上面代碼也能實(shí)現(xiàn)題目的功能,但是代碼沒有錯(cuò)就是好的嗎? 以上代碼復(fù)用性低;可維護(hù)性差,如果要改+的邏輯,就會(huì)牽一發(fā)而動(dòng)全身;擴(kuò)展性差,如果這個(gè)時(shí)候新增開平方的邏輯怎

    2024年02月12日
    瀏覽(25)
  • 設(shè)計(jì)模式-簡(jiǎn)單工廠模式

    簡(jiǎn)單工廠模式又稱為靜態(tài)工廠模式,其實(shí)就是根據(jù)傳入?yún)?shù)創(chuàng)建對(duì)應(yīng)具體類的實(shí)例并返回實(shí)例對(duì)象,這些類通常繼承至同一個(gè)父類,該模式專門定義了一個(gè)類來(lái)負(fù)責(zé)創(chuàng)建其他類的實(shí)例。 ?這就是工廠類,提供一個(gè)方法創(chuàng)建具體類的實(shí)例 優(yōu)點(diǎn):將對(duì)象的創(chuàng)建于使用分離,創(chuàng)建完

    2024年02月12日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包