java三種工廠模式 工廠方法模式與抽象工廠模式的區(qū)別?
工廠方法模式與抽象工廠模式的區(qū)別?工廠方法模式:抽象產(chǎn)品類可以從多個(gè)特定產(chǎn)品類派生。抽象工廠類可以派生多個(gè)具體工廠類。每個(gè)特定的工廠類只能創(chuàng)建特定產(chǎn)品類的一個(gè)實(shí)例。抽象工廠模式:多個(gè)抽象產(chǎn)品類。每個(gè)抽
工廠方法模式與抽象工廠模式的區(qū)別?
工廠方法模式:抽象產(chǎn)品類可以從多個(gè)特定產(chǎn)品類派生。抽象工廠類可以派生多個(gè)具體工廠類。每個(gè)特定的工廠類只能創(chuàng)建特定產(chǎn)品類的一個(gè)實(shí)例。抽象工廠模式:多個(gè)抽象產(chǎn)品類。每個(gè)抽象產(chǎn)品類可以派生多個(gè)特定的產(chǎn)品類。抽象工廠類可以派生多個(gè)具體工廠類。每個(gè)特定的工廠類可以創(chuàng)建特定產(chǎn)品類的多個(gè)實(shí)例。區(qū)別:工廠方法模式只有一個(gè)抽象產(chǎn)品類,而抽象工廠模式有多個(gè)抽象產(chǎn)品類。工廠方法模式的具體工廠類只能創(chuàng)建具體產(chǎn)品類的一個(gè)實(shí)例,而抽象工廠模式可以創(chuàng)建多個(gè)實(shí)例。
工廠模式和抽象工廠模式的本質(zhì)區(qū)別是什么?
首先,讓我們看看這兩個(gè)定義之間的區(qū)別:工廠模式:定義創(chuàng)建對(duì)象的借口,讓子類決定實(shí)例化哪個(gè)類。抽象工廠模式:提供一個(gè)接口來(lái)創(chuàng)建一組相關(guān)或相互依賴的對(duì)象,而不指定它們的特定類我認(rèn)為區(qū)別在于產(chǎn)品。如果產(chǎn)品是單一的,工廠模式是最合適的。但是,如果有多個(gè)業(yè)務(wù)品種和業(yè)務(wù)分類,那么通過(guò)抽象工廠模式生成所需的對(duì)象是一個(gè)非常好的解決方案。
進(jìn)一步了解:工廠模式用于產(chǎn)品層次結(jié)構(gòu),抽象工廠模式用于多個(gè)產(chǎn)品層次結(jié)構(gòu)。讓我們看一下工廠方法模式和抽象工廠模式的比較:工廠方法模式抽象工廠模式針對(duì)一個(gè)產(chǎn)品層次,針對(duì)多個(gè)產(chǎn)品層次。抽象產(chǎn)品類可以派生多個(gè)具體產(chǎn)品類,每個(gè)抽象產(chǎn)品類可以派生多個(gè)具體產(chǎn)品類抽象工廠類可以派生多個(gè)具體工廠類。抽象工廠類可以派生多個(gè)具體工廠類。每個(gè)混凝土工廠類只能創(chuàng)建一個(gè)混凝土產(chǎn)品類實(shí)例。每個(gè)具體工廠類可以創(chuàng)建多個(gè)具體產(chǎn)品類實(shí)例
簡(jiǎn)單工廠、工廠方法和抽象工廠屬于設(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)單工廠模式的工廠類通常使用靜態(tài)方法通過(guò)接收的不同參數(shù)返回不同的對(duì)象實(shí)例。不修改代碼就不能擴(kuò)展它。工廠方法工廠方法為每個(gè)產(chǎn)品提供工廠類。通過(guò)不同的工廠實(shí)例創(chuàng)建不同的產(chǎn)品實(shí)例。在同一層次結(jié)構(gòu)中,可以添加任何產(chǎn)品。抽象工廠抽象工廠處理產(chǎn)品族的概念。例如,每家汽車(chē)公司可能同時(shí)生產(chǎn)轎車(chē)、卡車(chē)和公共汽車(chē)。那么,每個(gè)工廠都必須有辦法制造汽車(chē)、卡車(chē)和公共汽車(chē)。添加新的產(chǎn)品線以應(yīng)對(duì)產(chǎn)品系列的概念很容易,但不能添加新產(chǎn)品。在工廠模式中,最重要的是工廠類,而不是產(chǎn)品類。產(chǎn)品類可以是多種形式,多層繼承或單個(gè)類。但要清楚的是,工廠模式接口將只返回一種類型的實(shí)例,在設(shè)計(jì)產(chǎn)品類時(shí)應(yīng)該注意這一點(diǎn)。最好有一個(gè)父類或一個(gè)共同實(shí)現(xiàn)的接口。使用工廠模式,返回的實(shí)例必須由工廠創(chuàng)建,而不是從其他對(duì)象獲取。工廠模式返回的實(shí)例可能不是新創(chuàng)建的,也可以返回工廠創(chuàng)建的實(shí)例。差異