工廠(chǎng)方法和抽象工廠(chǎng)的區(qū)別 抽象工廠(chǎng)和工廠(chǎng)方法模式在應(yīng)用中的不同作用?
抽象工廠(chǎng)和工廠(chǎng)方法模式在應(yīng)用中的不同作用?簡(jiǎn)單工廠(chǎng)、工廠(chǎng)方法和抽象工廠(chǎng)都是設(shè)計(jì)模式中的創(chuàng)新模式。它的主要功能是幫助我們提取對(duì)象的實(shí)例化部分,優(yōu)化系統(tǒng)架構(gòu),增強(qiáng)系統(tǒng)的可擴(kuò)展性。本文對(duì)這三種模式進(jìn)行了總結(jié)
抽象工廠(chǎng)和工廠(chǎng)方法模式在應(yīng)用中的不同作用?
簡(jiǎn)單工廠(chǎng)、工廠(chǎng)方法和抽象工廠(chǎng)都是設(shè)計(jì)模式中的創(chuàng)新模式。它的主要功能是幫助我們提取對(duì)象的實(shí)例化部分,優(yōu)化系統(tǒng)架構(gòu),增強(qiáng)系統(tǒng)的可擴(kuò)展性。本文對(duì)這三種模式進(jìn)行了總結(jié),并對(duì)它們之間的區(qū)別進(jìn)行了理解。簡(jiǎn)單工廠(chǎng)模式的工廠(chǎng)類(lèi)通常使用靜態(tài)方法通過(guò)接收的不同參數(shù)返回不同的對(duì)象實(shí)例。不修改代碼就不能擴(kuò)展它。工廠(chǎng)方法工廠(chǎng)方法為每個(gè)產(chǎn)品提供工廠(chǎng)類(lèi)。通過(guò)不同的工廠(chǎng)實(shí)例創(chuàng)建不同的產(chǎn)品實(shí)例。在同一層次結(jié)構(gòu)中,可以添加任何產(chǎn)品。抽象工廠(chǎng)抽象工廠(chǎng)處理產(chǎn)品族的概念。例如,每家汽車(chē)公司可能同時(shí)生產(chǎn)轎車(chē)、卡車(chē)和公共汽車(chē)。那么,每個(gè)工廠(chǎng)都必須有辦法制造汽車(chē)、卡車(chē)和公共汽車(chē)。添加新的產(chǎn)品線(xiàn)以應(yīng)對(duì)產(chǎn)品系列的概念很容易,但不能添加新產(chǎn)品。在工廠(chǎng)模式中,最重要的是工廠(chǎng)類(lèi),而不是產(chǎn)品類(lèi)。產(chǎn)品類(lèi)可以是多種形式,多層繼承或單個(gè)類(lèi)。但要清楚的是,工廠(chǎng)模式接口將只返回一種類(lèi)型的實(shí)例,在設(shè)計(jì)產(chǎn)品類(lèi)時(shí)應(yīng)該注意這一點(diǎn)。最好有一個(gè)父類(lèi)或一個(gè)共同實(shí)現(xiàn)的接口。使用工廠(chǎng)模式,返回的實(shí)例必須由工廠(chǎng)創(chuàng)建,而不是從其他對(duì)象獲取。工廠(chǎng)模式返回的實(shí)例可能不是新創(chuàng)建的,也可以返回工廠(chǎng)創(chuàng)建的實(shí)例。區(qū)別
工廠(chǎng)方法模式:一個(gè)抽象產(chǎn)品類(lèi)可以派生多個(gè)特定的產(chǎn)品類(lèi)。抽象工廠(chǎng)類(lèi)可以派生多個(gè)具體工廠(chǎng)類(lèi)。每個(gè)特定的工廠(chǎng)類(lèi)只能創(chuàng)建特定產(chǎn)品類(lèi)的一個(gè)實(shí)例。抽象工廠(chǎng)模式:多個(gè)抽象產(chǎn)品類(lèi)。每個(gè)抽象產(chǎn)品類(lèi)可以派生多個(gè)特定的產(chǎn)品類(lèi)。抽象工廠(chǎng)類(lèi)可以派生多個(gè)具體工廠(chǎng)類(lèi)。每個(gè)特定的工廠(chǎng)類(lèi)可以創(chuàng)建特定產(chǎn)品類(lèi)的多個(gè)實(shí)例。區(qū)別:工廠(chǎng)方法模式只有一個(gè)抽象產(chǎn)品類(lèi),而抽象工廠(chǎng)模式有多個(gè)抽象產(chǎn)品類(lèi)。工廠(chǎng)方法模式的具體工廠(chǎng)類(lèi)只能創(chuàng)建具體產(chǎn)品類(lèi)的一個(gè)實(shí)例,而抽象工廠(chǎng)模式可以創(chuàng)建多個(gè)實(shí)例。