真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

java工廠模式分為哪幾種

本篇內(nèi)容主要講解“java工廠模式分為哪幾種”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“java工廠模式分為哪幾種”吧!

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供古塔網(wǎng)站建設(shè)、古塔做網(wǎng)站、古塔網(wǎng)站設(shè)計(jì)、古塔網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、古塔企業(yè)網(wǎng)站模板建站服務(wù),10年古塔做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

定義

        工廠模式是 Java 中最常用的設(shè)計(jì)模式之一。這種類型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。

        工廠模式主要是為創(chuàng)建對(duì)象提供過(guò)渡接口,以便將創(chuàng)建對(duì)象的具體過(guò)程屏蔽隔離起來(lái),達(dá)到提高靈活性的目的。

工廠模式根據(jù)抽象程度的不同分為三種:

簡(jiǎn)單工廠模式(也叫靜態(tài)工廠模式)

工廠方法模式(也叫多形性工廠)

抽象工廠模式(也叫工具箱)

簡(jiǎn)單工廠模式

        實(shí)質(zhì)是由一個(gè)工廠類根據(jù)傳入的參數(shù),動(dòng)態(tài)決定應(yīng)該創(chuàng)建哪一個(gè)產(chǎn)品類(這些產(chǎn)品類繼承自一個(gè)父類或接口)的實(shí)例。簡(jiǎn)單工廠模式的創(chuàng)建目標(biāo),所有創(chuàng)建的對(duì)象都是充當(dāng)這個(gè)角色的某個(gè)具體類的實(shí)例。

工廠方法模式

        工廠方法是粒度很小的設(shè)計(jì)模式,因?yàn)槟J降谋憩F(xiàn)只是一個(gè)抽象的方法。 提前定義用于創(chuàng)建對(duì)象的接口,讓子類決定實(shí)例化具體的某一個(gè)類,即在工廠和產(chǎn)品中間增加接口,工廠不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,由接口針對(duì)不同條件返回具體的類實(shí)例,由具體類實(shí)例去實(shí)現(xiàn)。

抽象工廠模式

        當(dāng)有多個(gè)抽象角色時(shí)使用的一種工廠模式。抽象工廠模式可以向客戶端提供一個(gè)接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個(gè)產(chǎn)品對(duì)象。它有多個(gè)抽象產(chǎn)品類,每個(gè)抽象產(chǎn)品類可以派生出多個(gè)具體產(chǎn)品類,一個(gè)抽象工廠類,可以派生出多個(gè)具體工廠類,每個(gè)具體工廠類可以創(chuàng)建多個(gè)具體產(chǎn)品類的實(shí)例。

工廠方法模式應(yīng)該在實(shí)際中用的較多,我們以工廠方法模式舉例

(例子來(lái)源百度,幫助理解)

 抽象的產(chǎn)品類:定義car  交通工具類

public interface Car {    
   void gotowork(); }

定義實(shí)際的產(chǎn)品類,總共定義兩個(gè),bike 和bus 分別表示不同的交通工具類

public class Bike implements Car {
    @Override
    public void gotowork() {
        System.out.println("騎自行車(chē)去上班!");
    }
}
public class Bus implements Car {
    @Override
    public void gotowork() {
        System.out.println("坐公交車(chē)去上班!");
    }
}

定義抽象的工廠接口

public interface ICarFactory {
    Car getCar();
}

具體的工廠子類,分別為每個(gè)具體的產(chǎn)品類創(chuàng)建不同的工廠子類

public class BikeFactory implements ICarFactory {
    @Override
    public Car getCar() {
        return new Bike();
    }
}
public class BusFactory implements ICarFactory {    
@Override    public Car getCar() {        
       return new Bus();    } }

簡(jiǎn)單的測(cè)試類,來(lái)驗(yàn)證不同的工廠能夠產(chǎn)生不同的產(chǎn)品對(duì)象

public class TestFactory {
    @Test
    public void test() {
        ICarFactory factory = null;
        // bike
        factory = new BikeFactory();
        Car bike = factory.getCar();
        bike.gotowork();

        // bus
        factory = new BusFactory();
        Car bus = factory.getCar();
        bus.gotowork();
    }
}

工廠模式的優(yōu)點(diǎn):

        1、一個(gè)調(diào)用者想創(chuàng)建一個(gè)對(duì)象,只要知道其名稱就可以了,降低了耦合度。

        2、擴(kuò)展性高,如果想增加一個(gè)產(chǎn)品,只要擴(kuò)展一個(gè)工廠類就可以。使得代碼結(jié)構(gòu)更加清晰。

        3、屏蔽產(chǎn)品的具體實(shí)現(xiàn),調(diào)用者只關(guān)心產(chǎn)品的接口。

工廠模式的缺點(diǎn):

        每次增加一個(gè)產(chǎn)品時(shí),都需要增加一個(gè)具體類和對(duì)象實(shí)現(xiàn)工廠(這里可以使用反射機(jī)制來(lái)避免),使得系統(tǒng)中類的個(gè)數(shù)成倍增加,在一定程度上增加了系統(tǒng)的復(fù)雜度,同時(shí)也增加了系統(tǒng)具體類的依賴。所以對(duì)于簡(jiǎn)單對(duì)象來(lái)說(shuō),使用工廠模式反而增加了復(fù)雜度。

工廠模式的適用場(chǎng)景:

        1,  一個(gè)對(duì)象擁有很多子類。

        2,  創(chuàng)建某個(gè)對(duì)象時(shí)需要進(jìn)行許多額外的操作。

        3,  系統(tǒng)后期需要經(jīng)常擴(kuò)展,它把對(duì)象實(shí)例化的任務(wù)交由實(shí)現(xiàn)類完成,擴(kuò)展性好。

關(guān)于Java中的工廠模式的一些常見(jiàn)問(wèn)題:

        利用父類的向下轉(zhuǎn)型(使用父類類型的引用指向子類的對(duì)象)是可以達(dá)到類似于工廠模式的效果的,那為什么還要用工廠模式呢?

        把指向子類對(duì)象的父類引用賦給子類引用叫做向下轉(zhuǎn)型,如:

Class Student extends Person     
Person s = new Student();    
s = (Student)person ;

        使用向下轉(zhuǎn)型在客戶端實(shí)例化子類的時(shí)候,嚴(yán)重依賴具體的子類的名字。當(dāng)我們需要更改子類的構(gòu)造方法的時(shí)候,比如增加一個(gè)參數(shù),或者更改了子類的類名,所有的new出來(lái)的子類都需要跟著更改。   

        但如果我們使用工廠模式,我們僅僅需要在工廠中修改一下new的代碼,其余項(xiàng)目中用到此實(shí)例的都會(huì)跟著改,而不需要我們手動(dòng)去操作。

到此,相信大家對(duì)“java工廠模式分為哪幾種”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


網(wǎng)站欄目:java工廠模式分為哪幾種
轉(zhuǎn)載來(lái)源:http://weahome.cn/article/gjioso.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部