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

