您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java簡單工廠模式怎么實(shí)現(xiàn)的相關(guān)知識點(diǎn),內(nèi)容詳細(xì),邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
軟件設(shè)計(jì)模式,我們又稱之為設(shè)計(jì)模式。既然是模式,那么它就是按照一定規(guī)律指定的。也正是如此,設(shè)計(jì)模式就是一套被反復(fù)使用、大多數(shù)人都知道的、經(jīng)過整理分類的、前人代碼設(shè)計(jì)理念和經(jīng)驗(yàn)的總結(jié)。它存在的目的,就是為了提高代碼的可重用性、可讀性以及可靠性。
縱觀人類歷史,工廠從最開始的自產(chǎn)自銷的模式,到后來的農(nóng)耕社會的小作坊模式,再接著工業(yè)改革后的流水線模式,到現(xiàn)在的形成現(xiàn)代化產(chǎn)業(yè)鏈模式。同樣的道理,我們的項(xiàng)目代碼也是從簡單到繁雜,逐步迭代而來的。對于調(diào)用者而言,卻是越來越來簡單。就像是我們不用考慮工廠是怎么生產(chǎn)東西的,我們只需要購買即可。
按照實(shí)際業(yè)務(wù)場景,我們可以把工廠模式劃分為三種不同的實(shí)現(xiàn)方式:簡單工廠模式、工廠方法模式以及抽象工廠模式。
在這里,我們把被創(chuàng)建的對象稱之為“產(chǎn)品”,把創(chuàng)建產(chǎn)品的對象稱之為"工廠"。如果創(chuàng)建的產(chǎn)品很少,只需要一個(gè)工廠類就可以完成,那么我們就把這種模式稱之為簡單工廠模式。
優(yōu)點(diǎn)
工廠類必須要包含邏輯判斷,用來決定在什么時(shí)間創(chuàng)建哪個(gè)產(chǎn)品的實(shí)例??蛻舳司筒挥贸袚?dān)直接創(chuàng)建產(chǎn)品對象的責(zé)任,可以方便快捷地創(chuàng)建出相應(yīng)的產(chǎn)品。
客戶端不需要知道創(chuàng)建具體產(chǎn)品的類名,只要知道相關(guān)參數(shù)即可。
可以通過引入配置文件,在不修改客戶端代碼的前提下對具體產(chǎn)品類進(jìn)行更換或者添加。
缺點(diǎn)
簡單工廠模式工廠類比較單一,承擔(dān)了所有產(chǎn)品的職責(zé)。一旦出現(xiàn)異常,那么整個(gè)系統(tǒng)將會受到影響。且工廠類代碼會十分的臃腫,違背了高聚合原則。
使用簡單工廠模式引入新的工廠類,會增加系統(tǒng)的復(fù)雜度和理解難度。
系統(tǒng)擴(kuò)展的難度較高,添加新產(chǎn)品就不得不修改邏輯。在產(chǎn)品過多的時(shí)候,會造成邏輯過于復(fù)雜的問題。
簡單工廠模式使用的是static工廠方法,那么會造成工廠角色無法形成基于繼承的等級結(jié)構(gòu)。
應(yīng)用場景:簡單工廠模式適用于產(chǎn)品種類較少的情況下。
簡單工廠模式的主要角色劃分:
簡單工廠(SimpleFactory):是該設(shè)計(jì)模式的核心,主要負(fù)責(zé)實(shí)現(xiàn)創(chuàng)建所有實(shí)例的內(nèi)部邏輯。
抽象產(chǎn)品(Product):是簡單工廠創(chuàng)建的所有對象的父類,主要負(fù)責(zé)描述所有實(shí)例的公共接口。
具體產(chǎn)品(ConcreteProduct):是該設(shè)計(jì)模式的創(chuàng)建目標(biāo),
代碼實(shí)現(xiàn):
public class Client {
public static void main(String[] args) {
}
//抽象產(chǎn)品
public interface Product {
void show();
}
//具體產(chǎn)品:ProductA
static class ConcreteProduct1 implements Product {
public void show() {
System.out.println("具體產(chǎn)品1顯示...");
}
}
//具體產(chǎn)品:ProductB
static class ConcreteProduct2 implements Product {
public void show() {
System.out.println("具體產(chǎn)品2顯示...");
}
}
final class Const {
static final int PRODUCT_A = 0;
static final int PRODUCT_B = 1;
static final int PRODUCT_C = 2;
}
static class SimpleFactory {
public static Product makeProduct(int kind) {
switch (kind) {
case Const.PRODUCT_A:
return new ConcreteProduct1();
case Const.PRODUCT_B:
return new ConcreteProduct2();
}
return null;
}
}
}
以上就是“Java簡單工廠模式怎么實(shí)現(xiàn)”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學(xué)習(xí)更多的知識,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。