設計模式 工廠模式

2021-09-26 22:53:07 字數 2720 閱讀 5573

1、由淺入深,先講簡單工廠模式。簡單工廠模式就是說在建立物件時,將需要建立的不同物件的相關**封裝到不同的類中,這些稱為具體產品類,而將他們的公共**抽象到乙個抽象產品類中,每乙個具體產品類的物件都是抽象產品類的子類;然後提供乙個工廠類用於建立各種產品,在工廠類中提供乙個建立茶產品的工廠方法,該方法可以根據所傳入的引數不同,建立不同的具體產品物件。

package ******factorypattern;

public inte***ce product

package ******factorypattern;

public class factoryproduct

if("b".equals(type))

return null;}}

package ******factorypattern;

public class ******factorytest

}

package ******factorypattern;

public class concrectproducta implements product

}

package ******factorypattern;

public class concrectproductb implements product

}

如上**所示,factoryproduct類的getconcrectproduct能根據入參返回不同物件。

2、現在介紹工廠模式,又稱工廠方法模式。簡單工廠模式在例項化具體產品類的時候(factoryproduct .getconcrectproduct)需要寫很多if的邏輯,這樣不符合開閉原則。如果現在需要新增乙個concreteproductc的話需要寫if(「c」.equals(type))…

在工廠模式下只需要新增兩個類,乙個是concreteproductc ,乙個是 concretefactoryc。不用修改原有**。

工廠模式不再提供乙個統一的工廠類來建立所有的產品物件,而是針對不同的產品提供不同的工廠,系統提供乙個與產品等級結構相對應的工廠等級結構。定義如下:

定義乙個建立類的介面,讓子類決定將哪乙個類例項化。該模式讓乙個類的例項化延遲到子類。

具體**如下:

package factorypattern;

public class concreteproducta implements product

}

package factorypattern;

public class concreteproductb implements product

}

package factorypattern;

public inte***ce product

package factorypattern;

public class concretefactorya implements factory

}

package factorypattern;

public class concretefactoryb implements factory

}

package factorypattern;

public inte***ce factory

package factorypattern;

public class factorypatterntest

}

網上看到其他人說的工廠模式的好處,引用如下:

來說說我的看法:

工廠模式,也叫做說虛構造器,在簡單工廠中間插入了乙個具體產品工廠,這個工廠知道產品構造時候的具體細節,而簡單工廠模式的產品具體構造細節是在乙個個if/else分支,或者在switch/case分支裡面的。工廠模式的好處就在於將工廠和產品之間的耦合降低,將具體產品的構造過程放在了具體工廠類裡面。在以後擴充套件產品的時候方便很多,只需要新增乙個工廠類,乙個產品類,就能方便的新增產品,而不需要修改原有的**。而在簡單工廠中,如果要增加乙個產品,則需要修改工廠類,增加if/else分支,或者增加乙個case分支,工廠模式符合軟體開發中的ocp原則(open close principle),對擴充套件開放,對修改關閉。

抽象工廠模式:這個模式我總是感覺和builder模式非常相似。

工廠方法模式提供的是對乙個產品的等級模式,,而抽象工廠方法提供的是對多個產品的等級模式,注意,這裡的多個具體產品之間是相互耦合的,也就是說這裡的抽象工廠提供的產品之間是存在某種聯絡的。

3、抽象工廠模式

在工廠模式裡面,每乙個具體工廠只生產乙個具體產品,導致系統中的工廠類太過龐大,因此提出抽象工廠模式。

簡單看下類圖

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

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

設計模式 工廠設計模式

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

設計模式 工廠設計模式

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