抽象工廠:多個抽象產品類,派生出多個具體產品類;乙個抽象工廠類,派生出多個具體工廠類;每個具體工廠類可建立多個具體產品類的例項。
即提供乙個建立一系列相關或相互依賴物件的介面,而無需指定他們的具體的類。「一對多」的關係。
工廠方法:一抽象產品類派生出多個具體產品類;一抽象工廠類派生出多個具體工廠類;每個具體工廠類只能建立乙個具體產品類的例項。
即定義乙個建立物件的介面(即抽象工廠類),讓其子類(具體工廠類)決定例項化哪乙個類(具體產品類)。「一對一」的關係。
工廠方法之前我們講過,乙個具體的產品對應了乙個具體的實現類,我們這個是一對一的模式。抽象工廠模式是一對多哦,是不是有點像簡單工廠(我們的簡單工廠沒有抽象哦)但是也是一對對的關係,不可否認,每個都有自己的用途,好好體會
工廠方法
抽象工廠方法
其實就看圖來說的話,感覺差距不是很大。
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請輸入運算子 請輸入第二...