您好,登錄后才能下訂單哦!
java中什么是工廠模式?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
工廠模式(Factory Pattern)是 Java 中最常用的設(shè)計模式之一。這種類型的設(shè)計模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對象的最佳方式。
在工廠模式中,我們在創(chuàng)建對象時不會對客戶端暴露創(chuàng)建邏輯,并且是通過使用一個共同的接口來指向新創(chuàng)建的對象。
簡單的講就是用工廠方法代替了new的操作,在通俗點(diǎn)就是說,你new一個對象的時候直接調(diào)用工廠方法就行了,在編程時,需要定義一個工廠接口,由不同的的子類去實現(xiàn),再定一個具體工廠類,定義一個產(chǎn)生實例的方法,我們通過這個方法來獲得實例就行了。
優(yōu)點(diǎn):
1、一個調(diào)用者想創(chuàng)建一個對象,只要知道其名稱就可以了。
2、擴(kuò)展性高,如果想增加一個產(chǎn)品,只要擴(kuò)展一個工廠類就可以。
3、屏蔽產(chǎn)品的具體實現(xiàn),調(diào)用者只關(guān)心產(chǎn)品的接口。
缺點(diǎn):
每次增加一個產(chǎn)品時,都需要增加一個具體類和對象實現(xiàn)工廠,使得系統(tǒng)中類的個數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時也增加了系統(tǒng)具體類的依賴。這并不是什么好事。
應(yīng)用實例:
1、您需要一輛汽車,可以直接從工廠里面提貨,而不用去管這輛汽車是怎么做出來的,以及這個汽車?yán)锩娴木唧w實現(xiàn)。
工廠模式的簡單實現(xiàn)如下:
//所有車的接口 有一個共同改的方法 開車 public interface Car { public void drive(); } //奧迪類 實現(xiàn)car接口因為奧迪車也是車 肯定可以開的嘛 public class Audi implements Car { public Audi(){ System.out.println("生產(chǎn)出一輛奧迪"); } @Override public void drive() { System.out.println("開奧迪"); } } //寶馬類 實現(xiàn)car接口因為寶馬車也是車 肯定也可以開 public class Bmw implements Car{ public Bmw(){ System.out.println("生產(chǎn)出一輛寶馬"); } @Override public void drive() { System.out.println("開寶馬"); } } //生產(chǎn)車的工廠 該工廠接收一個車名 你只需要告訴他你要生產(chǎn)什么車 就可以生產(chǎn)出對應(yīng)的車出來 public class CarFactory { public static Car getCar(String caename){ if(caename.equals("audi")){ return new Audi(); }else if(caename.equals("bmw")){ return new Bmw(); } return null; } } //測試 public class Test { public static void main(String[] args) { //告訴工廠類 你需要生產(chǎn)出一輛奧迪車 那么給昂他傳一個參數(shù)audi進(jìn)去 Car audi = CarFactory.getCar("audi"); //就可以生產(chǎn)出奧迪的車 調(diào)用開車的方法就可以開車?yán)? audi.drive(); //寶馬類似 Car bmw = CarFactory.getCar("bmw"); bmw.drive(); } } 輸出: 成產(chǎn)出一輛奧迪 開奧迪 生產(chǎn)出一輛寶馬 開寶馬
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。