設計模式 工廠模式

2021-10-10 06:30:45 字數 3413 閱讀 7814

工廠類通過create(string type)方法,通過傳遞不同的引數,建立不同的產品類。

優點:簡單粗暴,在乙個工廠中可以建立任何產品類。

缺點:沒有遵循開閉原則,在新增新產品的基礎上,必須修改原有的**。在後續的迭代中,擴充套件性低。

介面類inte***ce product

public

inte***ce

product

產品類class producta

public

class

producta

implements

product

@override

public

void

operation2()

}

產品類class producta

public

class

productb

implements

product

@override

public

void

operation2()

}

client

public

class

client

}

輸出

operation1 producta

operation2 producta

operation1 productb

operation2 productb]

工廠方法模式,是針對每一種產品,提供乙個工廠類。通過不同的工廠例項建立不同的產品例項。

對原來的**進行改造productfactory

public

inte***ce

productfactory

producta 工廠productafactory

public

class

productafactory

implements

productfactory

}

productb 工廠productbfactory

public

class

productbfactory

implements

productfactory

}

client

public

class

client

}

輸出

operation1 producta

operation2 producta

operation1 productb

operation2 productb

抽象工廠應對的是產品族的概率。上述的工廠只負責生產固定的產品,抽象方法適用於生產乙個族系的產品。

簡單工廠:用於生產同一級別結構的任意商品。

工廠方法:用於生產同一級別結構的固定商品。

抽象工廠:用於生產同一產品族的全部產品。

汽車分為:轎車,suv等系列車型,也分為賓士,寶馬等品牌。以下的示例**為賓士工廠賓士系列產品,寶馬工廠生產寶馬系列產品。

inte***ce carsuv

public

inte***ce

carsuv

class benzcarsuv

public

class

benzcarsuv

implements

carsuv

}

class bwmcarsuv

public

class

bwmcarsuv

implements

carsuv

}

inte***ce carsedan

public

inte***ce

carsedan

class benzcarsendan

public

class

benzcarsendan

implements

carsedan

}

class bwmcarsedan

public

class

bwmcarsedan

implements

carsedan

}

inte***ce ca***ctory

public

inte***ce

ca***ctory

class bwmca***ctory

public

class

bwmca***ctory

implements

ca***ctory

@override

public carsedan creatcarsedan()

}

class benzca***ctory

public

class

benzca***ctory

implements

ca***ctory

@override

public carsedan creatcarsedan()

}

client

public

class

client

}

輸出

賓士benz suv operation

賓士benz 轎車 operation

bwm suv operation

bwm 轎車 operation

設計模式 工廠模式 抽象工廠模式

建立物件時不會對客戶暴露建立邏輯,並且通過使用乙個共同的介面來指向建立的物件。sept1 建立乙個公共介面,將要對外開放的方法在這裡定義。sept2 建立實現介面的類,用即實現對外開放的類的方法 sept3 建立工廠,提供乙個get方法,這個方法提供返回實現類的物件 建立選擇 sept4 使用,建立...

設計模式 工廠設計模式

用於建立物件的介面,交給子類去實現 我們舉乙個生產nokia的例子 public abstract class nokiaphone先試定義了乙個抽象類,抽象出方法poweronphone 模擬手機開機的動作 public class nokia5200 extends nokiaphone pub...

設計模式 工廠設計模式

工廠模式分為工廠方法模式和抽象工廠模式 工廠方法模式分為 普通工廠模式,就是建立乙個工廠類,對實現了同一介面的一些類進行例項的建立。多個工廠方法模式,是對普通工廠方法模式的改進,在普通工廠方法模式中,如果傳遞的字串出錯,則不能正確建立物件,而多個工廠方法模式是提供多個工廠方法,分別建立物件。靜態工廠...