java簡單工廠模式入門
前言
定義一個工廠類,他可以根據(jù)參數(shù)的不同返回不同類的實(shí)例,被創(chuàng)建的實(shí)例通常都具有共同的父類
在簡單工廠模式中用于被創(chuàng)建實(shí)例的方法通常為靜態(tài)(static)方法,因此簡單工廠模式又被成為靜態(tài)工廠方法(Static Factory Method) 只需要傳入一個正確的參數(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)
它是一個具體的類,非接口 抽象類。有一個重要的調(diào)用方法(productionDrink),通常是靜態(tài)的,利用if或者 switch創(chuàng)建產(chǎn)品并返回
缺點(diǎn)
擴(kuò)展性差 我想增加一種飲料,除了新增一個飲料產(chǎn)品類,還需要修改工廠類方法(增加‘Case'的分支條件) 這樣來說 不但對擴(kuò)展開放了,對修改也開放了 違背了開放-封閉原則
總結(jié)
本篇文章就到這里了,希望能給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
基于SpringBoot + Redis實(shí)現(xiàn)密碼暴力破解防護(hù)
在現(xiàn)代應(yīng)用程序中,保護(hù)用戶密碼的安全性是至關(guān)重要的,密碼暴力破解是指通過嘗試多個密碼組合來非法獲取用戶賬戶的密碼,為了保護(hù)用戶密碼不被暴力破解,我們可以使用Spring Boot和Redis來實(shí)現(xiàn)一些防護(hù)措施,本文將介紹如何利用這些技術(shù)來防止密碼暴力破解攻擊2023-06-06基于logback實(shí)現(xiàn)純java版本的SDK組件
這篇文章主要介紹了基于logback實(shí)現(xiàn)純java版本的SDK組件,在項目開發(fā)過程中通常會使用logback作為日志記錄的依賴工具,使用方式是引入logback相關(guān)jar包,然后配置logback.xml配置文件的方式來實(shí)現(xiàn),需要的朋友可以參考下2023-11-11SpringBoot如何配置獲取request中body的json格式參數(shù)
這篇文章主要介紹了SpringBoot如何配置獲取request中body的json格式參數(shù),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-06-06SpringBoot中的@RequestMapping注解的用法示例
@RequestMapping注解是SpringBoot中最常用的注解之一,它可以幫助開發(fā)者定義和處理HTTP請求,本篇文章我們將詳細(xì)為大家介紹如何使用SpringBoot中的@RequestMapping注解,感興趣的同學(xué)跟著小編一起來學(xué)習(xí)吧2023-06-06