碼農小汪 設計模式 抽象工廠模式

2021-07-11 05:05:18 字數 1511 閱讀 4863

抽象工廠:多個抽象產品類,派生出多個具體產品類;乙個抽象工廠類,派生出多個具體工廠類;每個具體工廠類可建立多個具體產品類的例項。

即提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們的具體的類。「一對多」的關係。

工廠方法:一抽象產品類派生出多個具體產品類;一抽象工廠類派生出多個具體工廠類;每個具體工廠類只能建立乙個具體產品類的例項。

即定義乙個建立物件的介面(即抽象工廠類),讓其子類(具體工廠類)決定例項化哪乙個類(具體產品類)。「一對一」的關係。

工廠方法之前我們講過,乙個具體的產品對應了乙個具體的實現類,我們這個是一對一的模式。抽象工廠模式是一對多哦,是不是有點像簡單工廠(我們的簡單工廠沒有抽象哦)但是也是一對對的關係,不可否認,每個都有自己的用途,好好體會

工廠方法

抽象工廠方法

其實就看圖來說的話,感覺差距不是很大。

inte***ce

iproducta

inte***ce

iproductb

class

producta1

implements

iproducta

} class

producta2

implements

iproducta

} class

productb1

implements

iproductb

} class

productb2

implements

iproductb

} //每一種牌子的產品生產工廠,即不同的廠商負責自己牌子產品的生產

abstract

class

factory1

abstract

class

factory2

//具體的工廠用來生產相關的產品

class

concretefactory1

extends

factory1

public iproductb getproductb1()

} class

concretefactoryb

extends

factory2

public iproductb getproductb2()

} //測試類

public

class

client

}

看到了這個,感覺想法是什麼?其實真的遇到了用途,你就能清楚的區別不同方法帶來的好處。實話說吧。我們工廠方法夠解決我們的問題了,抽象工廠方法的出現,就是為了應對一些特殊的問題。

碼農小汪 設計模式 模板方法

啥子東西叫我做模板,我就不說了吧!這個很清楚的。比如簡歷模板,我們做的卷子也是模板吧,空空給你留著,每人人做的答案各有異同。在模板模式 template pattern 中,乙個抽象類公開定義了執行它的方法的方式 模板。它的子類可以按需要重寫方法實現,但呼叫將以抽象類中定義的方式進行。這種型別的設計...

碼農小汪 ReentrantLock unlock

public void unlock 放掉乙個鎖和之前的acuqire乙個樣public final boolean release int arg return false release 會先呼叫tryrelease 來嘗試釋放當前執行緒鎖持有的鎖。成功的話,則喚醒後繼等待執行緒,並返回true...

碼農小白 設計模式篇 簡單工廠模式

面試題 一看到這題目,我首先想到了用switch語句,對運算子進行情況判定,然後對其數字相應操作。下面是我的第一代實現的 class program console.writeline 結果為 x catch exception ex 輸入 5 6顯示結果 請輸入第乙個數 5請輸入運算子 請輸入第二...