Java中常用的設(shè)計(jì)模式之工廠模式詳解
優(yōu)點(diǎn)
1.一個(gè)調(diào)用者想創(chuàng)建一個(gè)對象,只要知道其名稱就可以了。
2.擴(kuò)展性高,如果想增加一個(gè)產(chǎn)品,只要擴(kuò)展一個(gè)工廠類就可以。
3.屏蔽產(chǎn)品的具體實(shí)現(xiàn),調(diào)用者只關(guān)心產(chǎn)品的接口。
缺點(diǎn)
1.每次增加一個(gè)產(chǎn)品時(shí),都需要增加一個(gè)具體類和對象實(shí)現(xiàn)工廠,使得系統(tǒng)中類的個(gè)數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時(shí)也增加了系統(tǒng)具體類的依賴。這并不是什么好事。
使用場景
1.日志記錄器:記錄可能記錄到本地硬盤、系統(tǒng)事件、遠(yuǎn)程服務(wù)器等,用戶可以選擇記錄日志到什么地方。
2.數(shù)據(jù)庫訪問,當(dāng)用戶不知道最后系統(tǒng)采用哪一類數(shù)據(jù)庫,以及數(shù)據(jù)庫可能有變化時(shí)。
3.設(shè)計(jì)一個(gè)連接服務(wù)器的框架,需要三個(gè)協(xié)議,“POP3”、“IMAP”、“HTTP”,可以把這三個(gè)作為產(chǎn)品類,共同實(shí)現(xiàn)一個(gè)接口。
一、實(shí)現(xiàn)方式
例如:我們需要在電商平臺購買一臺手機(jī),我們并不需要去關(guān)心手機(jī)生產(chǎn)廠商是如何把手機(jī)生產(chǎn)出來的,我們只需要在搜索框輸入:華為手機(jī),小米手機(jī),就能購買到我們想要的手機(jī)了。下面看看具體實(shí)現(xiàn)吧。
1、定義一個(gè)接口
package com.asurplus.common.factory;
public interface Phone {
/**
* 獲取手機(jī)
*
* @return
*/
String getPhone();
}
2、定義兩個(gè)接口實(shí)現(xiàn)類
package com.asurplus.common.factory;
/**
* 華為手機(jī)實(shí)現(xiàn)類
*/
public class HuaweiPhone implements Phone {
@Override
public String getPhone() {
return "華為手機(jī)";
}
}
package com.asurplus.common.factory;
/**
* 小米手機(jī)實(shí)現(xiàn)類
*/
public class XiaomiPhone implements Phone {
@Override
public String getPhone() {
return "小米手機(jī)";
}
}
3、定義一個(gè)工廠類
package com.asurplus.common.factory;
/**
* 手機(jī)工廠類
*/
public class PhoneFactory {
/**
* 獲取手機(jī)
*
* @param name
* @return
*/
public static Phone getPhone(String name) {
if ("華為".equals(name)) {
return new HuaweiPhone();
}
if ("小米".equals(name)) {
return new XiaomiPhone();
}
return null;
}
}
二、測試
package com.asurplus.common.factory;
/**
* 工廠模式
*/
public class TestMain {
public static void main(String[] args) {
// 獲取手機(jī)
Phone huaweiPhone = PhoneFactory.getPhone("華為");
System.out.println(huaweiPhone.getPhone());
}
}
輸出結(jié)果

我們輸入的:華為,得到了華為手機(jī),從而實(shí)現(xiàn)了我們的工廠模式。
總結(jié)
本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
微服務(wù)之間如何通過feign調(diào)用接口上傳文件
這篇文章主要介紹了微服務(wù)之間如何通過feign調(diào)用接口上傳文件的操作,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06
高內(nèi)聚低耦合原則_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理
耦合度就是某模塊(類)與其它模塊(類)之間的關(guān)聯(lián)、感知和依賴的程度,是衡量代碼獨(dú)立性的一個(gè)指標(biāo),也是軟件工程設(shè)計(jì)及編碼質(zhì)量評價(jià)的一個(gè)標(biāo)準(zhǔn)2017-08-08
將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法
SpringBoot項(xiàng)目默認(rèn)打包的是可運(yùn)行jar包,也可以打包成不可運(yùn)行的jar包,本文給大家介紹將springboot項(xiàng)目生成可依賴的jar并引入到項(xiàng)目中的方法,感興趣的朋友一起看看吧2023-11-11
在SpringBoot中使用YourKit進(jìn)行性能調(diào)優(yōu)的教程詳解
在應(yīng)用程序的開發(fā)過程中,性能調(diào)優(yōu)是一個(gè)重要的環(huán)節(jié),在SpringBoot應(yīng)用程序中,我們可以使用YourKit來進(jìn)行性能調(diào)優(yōu),YourKit是一款非常強(qiáng)大的Java性能調(diào)優(yōu)工具,在本文中,我們將介紹如何在 SpringBoot應(yīng)用程序中使用YourKit進(jìn)行性能調(diào)優(yōu)2023-06-06
Java多線程實(shí)現(xiàn)聊天客戶端和服務(wù)器
這篇文章主要為大家詳細(xì)介紹了Java多線程聊天客戶端和服務(wù)器實(shí)現(xiàn)代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-10-10
Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例
上傳是Web工程中很常見的功能,SpringMVC框架簡化了文件上傳的代碼,本文給大家總結(jié)了Spring MVC多種情況下進(jìn)行文件上傳的實(shí)例,并通過代碼示例給大家介紹的非常詳細(xì),需要的朋友可以參考下2024-02-02
Java讀取properties文件內(nèi)容的幾種方式詳解
這篇文章主要介紹了Java讀取properties文件內(nèi)容的幾種方式詳解,讀取properties配置文件在實(shí)際的開發(fā)中使用的很多,本文來介紹常用的幾種實(shí)現(xiàn)方式,需要的朋友可以參考下2023-11-11

