java簡(jiǎn)單工廠模式入門(mén)
前言
定義一個(gè)工廠類(lèi),他可以根據(jù)參數(shù)的不同返回不同類(lèi)的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類(lèi)
在簡(jiǎn)單工廠模式中用于被創(chuàng)建實(shí)例的方法通常為靜態(tài)(static)方法,因此簡(jiǎn)單工廠模式又被成為靜態(tài)工廠方法(Static Factory Method) 只需要傳入一個(gè)正確的參數(shù),就可以獲取所需要的對(duì)象,而無(wú)需知道其實(shí)現(xiàn)過(guò)程
試?yán)?/h3>
以飲料加工廠為例
1. 創(chuàng)建飲料接口(或者抽象類(lèi))
public interface Drink {
void production();
}
2. 具體飲料類(lèi)的實(shí)現(xiàn)(可樂(lè)、雪碧)
public class ColaDrinkProduction implements Drink{
@Override
public void production() {
System.out.println("生產(chǎn)可樂(lè)飲料");
}
}
public class SpriteDrinkProduction implements Drink{
@Override
public void production() {
System.out.println("生產(chǎn)雪碧飲料");
}
}
3. 飲料生產(chǎn)工廠類(lèi)
public class DrinkProductionFactory {
public static Drink productionDrink(String type){
switch (type){
case "cloa":
return new ColaDrinkProduction();
default:
return new SpriteDrinkProduction();
}
}
}
4. 工廠調(diào)用
需要什么對(duì)象傳入對(duì)應(yīng)的參數(shù)即可
Drink cloa = DrinkProductionFactory.productionDrink("cloa");
cloa.production();
特點(diǎn)
它是一個(gè)具體的類(lèi),非接口 抽象類(lèi)。有一個(gè)重要的調(diào)用方法(productionDrink),通常是靜態(tài)的,利用if或者 switch創(chuàng)建產(chǎn)品并返回
缺點(diǎn)
擴(kuò)展性差 我想增加一種飲料,除了新增一個(gè)飲料產(chǎn)品類(lèi),還需要修改工廠類(lèi)方法(增加‘Case'的分支條件) 這樣來(lái)說(shuō) 不但對(duì)擴(kuò)展開(kāi)放了,對(duì)修改也開(kāi)放了 違背了開(kāi)放-封閉原則
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
如何利用Java?AWT?創(chuàng)建一個(gè)簡(jiǎn)易計(jì)算器
這篇文章主要介紹了如何利用Java?AWT?創(chuàng)建一個(gè)簡(jiǎn)易計(jì)算器,AWT?是一個(gè)有助于構(gòu)建?GUI?的?API?基于?java?應(yīng)用程序,下面關(guān)于其相關(guān)資料實(shí)現(xiàn)計(jì)算器的內(nèi)容詳細(xì),需要的朋友可以參考一下2022-03-03
Java實(shí)現(xiàn)把文件壓縮成zip文件的示例代碼
這篇文章主要為大家介紹了如何通過(guò)Java語(yǔ)言實(shí)現(xiàn)將文件壓縮成zip文件,本文中示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
Eolink上傳文件到Java后臺(tái)進(jìn)行處理的示例代碼
這篇文章主要介紹了Eolink上傳文件到Java后臺(tái)進(jìn)行處理,這里是上傳的excel表格數(shù)據(jù)并轉(zhuǎn)換為java集合對(duì)象、然后進(jìn)行業(yè)務(wù)邏輯處理判斷最后保存到數(shù)據(jù)庫(kù)?,需要的朋友可以參考下2022-12-12
Jmeter使用接口傳遞數(shù)據(jù)過(guò)程圖解
這篇文章主要介紹了Jmeter使用接口傳遞數(shù)據(jù)過(guò)程圖解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05
Spring Boot 與 Kotlin 上傳文件的示例代碼
這篇文章主要介紹了Spring Boot 與 Kotlin 上傳文件的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-01-01
SpringBoot在IDEA中實(shí)現(xiàn)熱部署的步驟
這篇文章主要介紹了SpringBoot在IDEA中實(shí)現(xiàn)熱部署的步驟,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下2020-11-11
java字符串?dāng)?shù)字補(bǔ)齊位數(shù)詳解
這篇文章主要介紹了java字符串?dāng)?shù)字補(bǔ)齊位數(shù),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-03-03
Quarkus篇入門(mén)創(chuàng)建項(xiàng)目搭建debug環(huán)境
這篇文章主要為大家介紹了Quarkus篇入門(mén)創(chuàng)建項(xiàng)目搭建debug環(huán)境,先來(lái)一套hello?world,來(lái)搭建基本的運(yùn)行及調(diào)試環(huán)境吧2022-02-02
用java生成html文件實(shí)現(xiàn)原理及代碼
用printStream來(lái)向html文件里輸出數(shù)據(jù),先創(chuàng)建一個(gè)StringBuilder對(duì)象,通過(guò)append方法來(lái)為其添加html語(yǔ)句,具體實(shí)現(xiàn)如下,感興趣的朋友可以參考下,希望對(duì)大家有所幫助2013-08-08

