成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

設(shè)計(jì)模式之抽象工廠(chǎng)

VincentFF / 2613人閱讀

摘要:類(lèi)圖上面的這張圖引用設(shè)計(jì)模式之禪關(guān)于抽象工廠(chǎng)的通用類(lèi)圖,說(shuō)實(shí)話(huà),我覺(jué)得這張圖很難懂,不容易表述抽象工廠(chǎng)模式也或許是個(gè)人理解能力。

前言

關(guān)于抽象工廠(chǎng)模式,博主初學(xué)的時(shí)候是懵逼的,花了好大力氣才明白它與工廠(chǎng)模式的異同,不得不說(shuō)理解能力還有待加強(qiáng)(~。~)

什么是抽象工廠(chǎng)模式
為創(chuàng)建一組相關(guān)或相互依賴(lài)的對(duì)象提供一個(gè)接口,而且無(wú)須指定它們的具體類(lèi)。

讓我們?cè)倩仡櫹鹿S(chǎng)模式的定義:

定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)例化哪一個(gè)類(lèi)。工廠(chǎng)方法使一個(gè)類(lèi)的實(shí)例化延遲到子類(lèi)。

從定義上看,區(qū)別在于抽象工廠(chǎng)是針對(duì)一組相關(guān)或依賴(lài)的對(duì)象(產(chǎn)品和產(chǎn)品之間有共同的約束),而工廠(chǎng)模式是針對(duì)一種產(chǎn)品。

UML類(lèi)圖

上面的這張圖引用設(shè)計(jì)模式之禪關(guān)于抽象工廠(chǎng)的通用類(lèi)圖,說(shuō)實(shí)話(huà),我覺(jué)得這張圖很難懂,不容易表述抽象工廠(chǎng)模式(也或許是個(gè)人理解能力)。下面上我的例子:

抽象工廠(chǎng)模式是工廠(chǎng)方法模式的升級(jí)版本,在有多個(gè)業(yè)務(wù)品種、業(yè)務(wù)分類(lèi)時(shí),通過(guò)抽象工廠(chǎng)模式產(chǎn)生需要的對(duì)象是一種非常好的解決方式。要想理解抽象工廠(chǎng)模式,有兩個(gè)概念我們是必須要理解的。

產(chǎn)品族:功能相關(guān)聯(lián)的一組產(chǎn)品,一般位于不同產(chǎn)品等級(jí)結(jié)構(gòu)的相同位置上,每一個(gè)產(chǎn)品族中的產(chǎn)品數(shù)應(yīng)該與產(chǎn)品等級(jí)結(jié)構(gòu)數(shù)一致。在上面的例子中:ComputerCpu和ComputerRam屬于一個(gè)產(chǎn)品族,MobileRam和MobileCpu屬于一個(gè)產(chǎn)品族.

產(chǎn)品等級(jí)結(jié)構(gòu): 一種產(chǎn)品內(nèi)部的不同等級(jí)。比如cpu下的computerCpu和MobileCpu,Ram下的computerRam和mobileRam.

看懂了嗎?沒(méi)看懂就再看一遍啊.....如果不理解這兩個(gè)概念,就不會(huì)理解抽象工廠(chǎng),所以務(wù)必看懂再看接下來(lái)的文章.(想要更仔細(xì)的了解這兩個(gè)概念,可以觀看鏈接描述)

使用場(chǎng)景

一組對(duì)象有相同的約束,就可以使用抽象工廠(chǎng)模式。就比如我們常用的qq音樂(lè),有mac版的,有windows版的,他們共同的約束就是操作系統(tǒng)。相應(yīng)的在這個(gè)也無(wú)力,產(chǎn)品族有兩個(gè),mac版qq音樂(lè)和windows版qq音樂(lè)。產(chǎn)品等級(jí)結(jié)構(gòu)只有一個(gè)就是qq音樂(lè)了。

代碼分析

按照上面的cpu和ram

public abstract class Cpu {

    public void introduce() {
        System.out.println("我是" + getOperationSystem() + "處理器,運(yùn)算速度賊快");
    }

    abstract String getOperationSystem();
}
public class ComputerCpu extends Cpu {
    @Override
    String getOperationSystem() {
        return "pc";
    }
}
public class MobileCpu extends Cpu {
    @Override
    String getOperationSystem() {
        return "移動(dòng)端";
    }
}
public abstract class Ram {
    public void introduce(){
        System.out.println("我是"+getOperationSystem()+"內(nèi)存,存取速度賊快");
    }

    abstract String getOperationSystem();
}
public class ComputerRam extends Ram {
    @Override
    String getOperationSystem() {
        return "pc";
    }
}
public class MobileRam extends Ram {
    @Override
    String getOperationSystem() {
        return "移動(dòng)端";
    }
}
public abstract class AbstractFactory {

    abstract Cpu createCpu();
    abstract Ram createRam();
}
public class ComputerFactory extends AbstractFactory {
    @Override
    Cpu createCpu() {
        return new ComputerCpu();
    }

    @Override
    Ram createRam() {
        return new ComputerRam();
    }
}
public class MobileFactory extends AbstractFactory {
    @Override
    Cpu createCpu() {
        return new MobileCpu();
    }

    @Override
    Ram createRam() {
        return new MobileRam();
    }
}
public class Client {

    public static void main(String[] args) {
        AbstractFactory computerFactory = new ComputerFactory();
        AbstractFactory mobileFactory = new MobileFactory();

        computerFactory.createCpu().introduce();
        computerFactory.createRam().introduce();

        mobileFactory.createCpu().introduce();
        mobileFactory.createRam().introduce();
    }
}
測(cè)試結(jié)果:
我是pc處理器,運(yùn)算速度賊快
我是pc內(nèi)存,存取速度賊快
我是移動(dòng)端處理器,運(yùn)算速度賊快
我是移動(dòng)端內(nèi)存,存取速度賊快

相信只要前面的理論懂了,上面的這個(gè)小例子簡(jiǎn)直不要太輕松。

抽象廠(chǎng)模式具有封裝性,高層模塊在調(diào)用時(shí)根本不需要關(guān)心具體實(shí)現(xiàn)類(lèi),只要知道接口(抽象類(lèi))就可以了,我們不需要關(guān)心對(duì)象的創(chuàng)建問(wèn)題,將創(chuàng)建對(duì)象的問(wèn)題統(tǒng)統(tǒng)拋給工廠(chǎng),只需知道一個(gè)工廠(chǎng),就可以創(chuàng)造這個(gè)產(chǎn)品組的所有產(chǎn)品,優(yōu)秀的設(shè)計(jì)就該如此。

產(chǎn)品族內(nèi)的約束非公開(kāi)狀態(tài),比如我使用手機(jī),用的cpu和ram肯定都是移動(dòng)端的,你總不可能手機(jī)用pc的cpu或者ram吧,本來(lái)就是不配套的配置。但是我們不需要去關(guān)心這個(gè),因?yàn)樗麄兊募s束都在工廠(chǎng)內(nèi)實(shí)現(xiàn)

總結(jié)

抽象工廠(chǎng)模式主要是解決一組具有相同約束的對(duì)象的創(chuàng)建問(wèn)題。其中最核心的概念就是產(chǎn)品族和產(chǎn)品等級(jí)結(jié)構(gòu),抽象工廠(chǎng)模式在擴(kuò)展產(chǎn)品等級(jí)結(jié)構(gòu)是非常容易的,只需要增加新的產(chǎn)品類(lèi)和新的工廠(chǎng)類(lèi)就可以,從這點(diǎn)看它是符合開(kāi)閉原則的,若是想擴(kuò)展產(chǎn)品族,也就是增加一種產(chǎn)品,就需要?jiǎng)?chuàng)建對(duì)應(yīng)類(lèi),同時(shí)需要修改所有的工廠(chǎng),是不符合開(kāi)閉原則的。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/70626.html

相關(guān)文章

  • 一天一個(gè)設(shè)計(jì)模式JS實(shí)現(xiàn)——工廠(chǎng)模式

    摘要:參考文章深入理解三種工廠(chǎng)模式工廠(chǎng)模式,工廠(chǎng)方法模式,抽象工廠(chǎng)模式詳解工廠(chǎng)模式是中最常用的設(shè)計(jì)模式之一。這種類(lèi)型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的最佳方式。 參考文章:深入理解java三種工廠(chǎng)模式工廠(chǎng)模式,工廠(chǎng)方法模式,抽象工廠(chǎng)模式 詳解 工廠(chǎng)模式(Factory Pattern)是 Java 中最常用的設(shè)計(jì)模式之一。這種類(lèi)型的設(shè)計(jì)模式屬于創(chuàng)建型模式,它提供了一種創(chuàng)建對(duì)象的...

    Muninn 評(píng)論0 收藏0
  • 優(yōu)才公開(kāi)課筆記:php設(shè)計(jì)模式 (二)工廠(chǎng)模式

    摘要:但本質(zhì)是,簡(jiǎn)單工廠(chǎng)并未嚴(yán)格遵循設(shè)計(jì)模式的開(kāi)閉原則,當(dāng)需要增加新產(chǎn)品時(shí)也需要修改工廠(chǎng)代碼。但是工廠(chǎng)方法則嚴(yán)格遵守開(kāi)閉原則,模式只負(fù)責(zé)抽象工廠(chǎng)接口,具體工廠(chǎng)交給客戶(hù)去擴(kuò)展。 最近開(kāi)展了三次設(shè)計(jì)模式的公開(kāi)課,現(xiàn)在來(lái)總結(jié)一下設(shè)計(jì)模式在PHP中的應(yīng)用,這是第二篇?jiǎng)?chuàng)建型模式之工廠(chǎng)模式。 設(shè)計(jì)模式的一般介紹在第一篇文章講了,這里就不重復(fù)。 工廠(chǎng)模式 實(shí)現(xiàn):定義一個(gè)用于創(chuàng)建對(duì)象的接口,讓子類(lèi)決定實(shí)...

    aisuhua 評(píng)論0 收藏0
  • 設(shè)計(jì)模式抽象工廠(chǎng)模式

    摘要:所謂的產(chǎn)品族,一般或多或少的都存在一定的關(guān)聯(lián),抽象工廠(chǎng)模式就可以在類(lèi)內(nèi)部對(duì)產(chǎn)品族的關(guān)聯(lián)關(guān)系進(jìn)行定義和描述,而不必專(zhuān)門(mén)引入一個(gè)新的類(lèi)來(lái)進(jìn)行管理。 0x01.定義與類(lèi)型 定義:抽象工廠(chǎng)模式提供一個(gè)創(chuàng)建一系列相關(guān)或相互依賴(lài)對(duì)象的接口 無(wú)需指定它們具體的類(lèi) 類(lèi)型:創(chuàng)建型 UML showImg(https://segmentfault.com/img/bVbtBp1?w=800&h=862...

    Acceml 評(píng)論0 收藏0
  • 工廠(chǎng)模式(一)抽象工廠(chǎng)模式

    摘要:主要詳解簡(jiǎn)單工廠(chǎng)模式到抽象工廠(chǎng)模式的演變。抽象工廠(chǎng)模式當(dāng)一個(gè)類(lèi)別的產(chǎn)品還有多個(gè)系列區(qū)分時(shí),為了按系列生產(chǎn)商品,使用抽象工廠(chǎng)區(qū)分。 主要詳解簡(jiǎn)單工廠(chǎng)模式到抽象工廠(chǎng)模式的演變。 簡(jiǎn)單工廠(chǎng)模式 即靜態(tài)工廠(chǎng)模式1.將對(duì)象的創(chuàng)建和使用分開(kāi);2.將生產(chǎn)過(guò)程集中,便于集中管理;3.當(dāng)需要?jiǎng)?chuàng)建的對(duì)象類(lèi)有變動(dòng)時(shí),就不用在所有new 的地方修改了,直接修改工廠(chǎng)類(lèi)即可; /** * 簡(jiǎn)單工廠(chǎng)模式 ---...

    woshicixide 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<