工廠模式部落格學習小結

2021-08-20 06:46:13 字數 2113 閱讀 5869

學習部落格:

小結:

1)簡單(靜態)工廠模式:

有乙個抽象類(代表乙個系列的產品),不同的產品繼承這個抽象類(例如部落格中定義了bmw的抽象類,不同型別的產品bmw320,bmw523繼承這個抽象類)

乙個工廠生成不同的商品(

比如部落格中的,乙個工廠既生產bmw320又生產523,通過switch語句選擇生產不同的產品

)簡單工廠的缺點:每增加乙個新的產品,都要對工廠類進行修改。

無抽象工廠,通過swtich()語句,選擇生產不同的產品

。**示例:

abstract class bmw

}class bmw320 extends bmw

}class bmw520 extends bmw

}class factory

return null; }}

class factoryblog

}

另一種形式:

abstract class bmw 

}class bmw320 extends bmw

}class bmw520 extends bmw

}class factory

public static bmw createbmw520()

}class factoryblog

}

工廠模式:

有乙個抽象工廠

,定義了一類產品的生產函式,多個生成不同產品的工廠繼承抽象工廠,不同的產品交給不同的工廠生產。

但每個工廠生成一種型別的產品。(例如每個不同的工廠只生產一種麵條)

相比與簡單工廠,抽象工廠類中有生產生成的方法,每增加新的產品,增加生產這個新產品的工廠

工廠方法的好處:每增加乙個新的產品,不需要去改工廠類,而只需要增加響應的繼承工廠類。

工廠方法的缺點:當產品種類很多的時候,會出現大量的與之對應的工廠物件,這不是我們希望的。

**示例:

abstract class bmw

}class bmw320 extends bmw

}class bmw520 extends bmw

}inte***ce factorybmw

class factorybmw320 implements factorybmw

}class factorybmw520 implements factorybmw

}class factoryblog

}

抽象工廠模式:

定義了兩個不同型別商品的抽象類(例如汽車抽象類和兒童安全座椅抽象類),繼承這兩個抽象類可以得到不同的型別產品(上面的兩種模式得到的是同種系列的產品)

乙個抽象工廠,與上面不同的是,這個抽象工廠裡面生產不同型別的產品(例如汽車加兒童座椅)。

抽象工廠類中有生產兩種商品方法,不同的具體工廠搭配生產兩種不同型別的商品

。**示例:

abstract class bmw 

}class bmw320 extends bmw

}class bmw520 extends bmw

}abstract class safechair

}class chaira extends safechair

}class chairb extends safechair

}abstract class factory

class factory_nantong extends factory

@override

public safechair createchair() }

class factory_shenyang extends factory

@override

public safechair createchair() }

class factoryblog

}

工廠模式小結

工廠模式有簡單工廠,工廠模式,和抽象工廠模式 1,簡單工廠 就是建立乙個factory類,裡面封裝一些類物件建立方法,比如說factory可封裝如下方法 uiview factorywithtag int tag uiimageview factorywithimagename nsstring n...

設計模式學習小結(1 1) 工廠模式

一般程式架構分為 圖形介面層 邏輯控制層 基礎功能層 作用 延遲子類例項化,一般用於邏輯控制層中。類圖如下 示例 include class iproduct class producta public iproduct class productb public iproduct class cp...

模式學習小結 工廠模式 建構函式 原型模式

一直對工廠模式 建構函式及原型模式的定義有些模糊,今天抽了些時間學了下工廠模式 建構函式及原型模式的區別及用途,小結一番。一 工廠模式 工廠模式 function createperson name,age var person1 createperson one 20 var person2 cr...