java工廠模式的三種實現方式

2021-09-25 02:23:14 字數 2916 閱讀 8479

今天給大家介紹另外一種設計模式——工廠模式。工廠模式主要用於建立產品(物件),使用者只使用產品提供的功能,至於產品功能是如何實現的、產品本身是怎麼建立的,使用者並不關心。
實現工廠模式的關鍵技術點如下:

用乙個介面抽象產品的功能,所有具體的產品類都實現該介面。

工廠類定義乙個建立產品的方法,引數為產品的具體型別,返回乙個產品介面物件。

使用者通過產品介面使用產品功能。

簡單工廠:提供乙個建立物件例項的功能,而無需關心具體實現。被建立例項的類可以是介面、抽象類,也可以是具體的類。
package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public inte***ce car

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class benz implements car

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class bmw implements car

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

* 既能生產寶馬,也能生產賓士。

*/public class ******factory else if(cartype.equals("benz"))else

}//用於測試

public static void main(string args)

}

根據簡單工廠的定義,使用者只要產品而不在乎產品如何生產。這看起來很完美,但是這個世界上存在什麼車都能生產的大工廠嗎?顯然不存在。每乙個汽車都有自己的生產工廠,都有自己的生產技術。如果只是依靠簡單工廠來實現,那麼我們得在工廠類中巢狀n多個if...else if。顯然簡單工廠模式不太優雅。那如何避免在工廠類中巢狀多個if...else if呢,這就是下面要說的工廠方法了。

package factory;

/** * created by mxi4oyu on 2019/7/8.

* 定義乙個工廠介面,功能就是生產汽車。

*/public inte***ce factory

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class benzfactory implements factory

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class bmwfactory implements factory

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class factorytest

}

根據工廠方法的實現**,我們可以看出,不同品牌的汽車是由不同的工廠生產的,這樣看起來似乎很完美。但是當乙個人想去買寶馬的時候他就要找到寶馬工廠給他生產一輛。過幾天又想要賓士的時候,又得跑到賓士工廠給他生產一輛。這無疑增加了使用者的操作複雜性。有沒有一種方便使用者操作的方法呢,這就是下面要說的抽象工廠模式了。

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public abstract class abstractfactory else if("benz".equalsignorecase(cartype))else}}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class defaultfactory extends abstractfactory

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class bmwfactorya extends abstractfactory

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class benzfactorya extends abstractfactory

}

package factory;

/** * created by mxi4oyu on 2019/7/8.

*/public class abstractfactorytest

}

根據上述**可以看出,使用者需要一輛汽車,只需要去找預設的工廠提出自己的需求(傳入引數),便能得到自己想要產品,而不用根據產品去尋找不同的生產工廠,方便使用者操作。設計模式的經典之處,就在於解決了編寫**的人和呼叫**的人雙方的痛楚,不同的設計模式也只適用於不同的場景。

Java三種工廠設計模式

乙個栗子 我喜歡吃麵條,抽象 乙個麵條基類 介面也可以 這是產品的抽象類。public abstract class inoodles 程式設計師加班必備也要吃泡麵 具體的產品類 public class paonoodles extends inoodles還有我最愛吃的家鄉的幹扣面 具體的產品類...

java設計模式 三種工廠模式

工廠模式提供建立物件的介面。工廠模式分為三類 簡單工廠模式 factory 工廠方法模式 factory method 和抽象工廠模式 abstract factory gof在 設計模式 中將工廠模式分為兩類 工廠方法模式 factory method 和抽象工廠模式 abstract facto...

三種工廠模式

本文介紹設計模式中的工廠模式。工廠模式,顧名思義,就是本來我們需要某樣東西,需要自己造,可有了工廠呢?我需要該東西時,只需告訴工廠,工廠就會生產該東西,一定程度上,把使用者和生產者分開了。解耦了。追本溯源,假設我們現在有乙個類a,類a裡需要類b的乙個物件,一般的處理是這樣,b b new b 但這樣...