摘要:簡(jiǎn)介抽象工廠是一種創(chuàng)建型模式,它提代一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類。類圖是聲明了創(chuàng)建抽象產(chǎn)品的抽象工廠,是具體的工廠,實(shí)現(xiàn)了創(chuàng)建具體產(chǎn)品。
1. 簡(jiǎn)介
??抽象工廠是一種創(chuàng)建型模式,它提代一個(gè)創(chuàng)建一系列相關(guān)或相互依賴對(duì)象的接口,而無需指定它們具體的類。抽象工廠允許調(diào)用者使用抽象的接口創(chuàng)建一組相關(guān)的產(chǎn)口,而不需要關(guān)心它們具體的產(chǎn)品,這樣就從具體的產(chǎn)口中解耦出來,依賴抽象而不是依賴具體類。
2. UML類圖??AbstractFactory是聲明了創(chuàng)建抽象產(chǎn)品的抽象工廠,ConcreteFactory是具體的工廠,實(shí)現(xiàn)了創(chuàng)建具體產(chǎn)品。AbstractProduct是一類產(chǎn)品的抽象接口,Product是具體的產(chǎn)品。
3. 實(shí)例抽象產(chǎn)品A
public interface AbstractProductA { void showProductA(); }
具體產(chǎn)品A
public class ProductA1 implements AbstractProductA { public void showProductA() { System.out.println("ProductA1"); } } public class ProductA2 implements AbstractProductB { public void showProductA() { System.out.println("ProductA2"); } }
抽象產(chǎn)品B
public interface AbstractProductB { void showProductB(); }
具體產(chǎn)品B
public class ProductB1 implements AbstractProductB { public void showProductB() { System.out.println("ProductB1"); } } public class ProductB2 implements AbstractProductB { public void showProductB() { System.out.println("ProductB2"); } }
抽象工廠
public interface AbstractFactory { AbstractProductA createProductA(); AbstractProductB createProductB(); }
具體工廠
public class Factory1 implements AbstractFactory { public AbstractProductA createProductA() { return new ProductA1(); } public AbstractProductB createProductB() { return new ProductB1(); } } public class Factory2 implements AbstractFactory { public AbstractProductA createProductA() { return new ProductA2(); } public AbstractProductB createProductB() { return new ProductB2(); } }
測(cè)試
public class Test { public static void main(String[] args) { AbstractFactory factory = new Factory1(); AbstractProductA productA = factory.createProductA(); productA.showProductA(); AbstractProductB productB = factory.createProductB(); productB.showProductB(); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/76504.html
摘要:基于工廠角色和產(chǎn)品角色的多態(tài)性設(shè)計(jì)是工廠方法模式的關(guān)鍵。工廠方法模式之所以又被稱為多態(tài)工廠模式,是因?yàn)樗械木唧w工廠類都具有同一抽象父類。工廠方法模式總結(jié)工廠方法模式是簡(jiǎn)單工廠模式的進(jìn)一步抽象和推廣。 JavaScript工廠模式 首先需要說一下工廠模式。工廠模式根據(jù)抽象程度的不同分為三種 簡(jiǎn)單工廠模式 工廠方法模式 抽象工廠模式 1.簡(jiǎn)單工廠模式 簡(jiǎn)單工廠模式:又稱為靜態(tài)工廠方法...
摘要:抽象工廠模式可以向客戶端提供一個(gè)接口,使客戶端在不必指定產(chǎn)品的具體的情況下,創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象。前邊的兩個(gè)都是直接生產(chǎn)實(shí)例的,開始以為抽象工廠也是但是后來發(fā)現(xiàn)抽象工廠更像是生產(chǎn)工廠,其實(shí)抽象工廠其實(shí)是實(shí)現(xiàn)子類繼承父類的方法。 創(chuàng)建型模式 創(chuàng)建型模式是對(duì)一個(gè)類的實(shí)例化過程進(jìn)行了抽象,把對(duì)象的創(chuàng)建和對(duì)象的使用進(jìn)行了分離 上一篇介紹了下單例模式,這一篇介紹一下工廠模式和抽象工廠模式,...
摘要:簡(jiǎn)單工廠,工廠模式和抽象工廠。不要認(rèn)為簡(jiǎn)單工廠是用就覺得一無是處,也不要覺得抽象工廠比較高大上就到處套。 工廠模式,實(shí)際上也會(huì)根據(jù)業(yè)務(wù)情景不同會(huì)有不同的實(shí)現(xiàn)方式。一般分為3種。簡(jiǎn)單工廠,工廠模式和抽象工廠。顧名思義,這三種從簡(jiǎn)單到抽象,名稱越來越高大上,實(shí)現(xiàn)方式肯定是越來越復(fù)雜 結(jié)論1:三種工廠的實(shí)現(xiàn)越來越復(fù)雜 簡(jiǎn)單工廠 public class Factory { // 定義...
摘要:反射提供給面向?qū)ο缶幊炭梢宰允〉哪芰?,即反射。在?jiǎn)單工廠模式中,根據(jù)傳遞的參數(shù)來返回不同的類的實(shí)例簡(jiǎn)單工廠模式又稱為靜態(tài)工廠方法模式。也就是簡(jiǎn)單工廠模式工廠工廠類。PHP高級(jí)特性-反射以及工廠設(shè)計(jì)模式的結(jié)合使用 [結(jié)合 Laravel-Admin 代碼實(shí)例講解]利用反射來實(shí)現(xiàn)工廠模式的生產(chǎn)而無需創(chuàng)建特定的工廠類本文地址http://janrs.com/?p=833轉(zhuǎn)載無需經(jīng)過作者本人授權(quán)轉(zhuǎn)載...
摘要:支持增加任意產(chǎn)品抽象工廠用來生產(chǎn)不同產(chǎn)品族的全部產(chǎn)品。對(duì)于增加新的產(chǎn)品,無能為力支持增加產(chǎn)品族參考系列源地址系列目錄設(shè)計(jì)模式概述設(shè)計(jì)模式一簡(jiǎn)單工廠模式設(shè)計(jì)模式二工廠方法模式設(shè)計(jì)模式三抽象工廠模式設(shè)計(jì)模式四單例模式 一、什么是抽象工廠模式 抽象工廠模式的用意為:給客戶端提供一個(gè)接口,可以創(chuàng)建多個(gè)產(chǎn)品族中的產(chǎn)品對(duì)象 ,而且使用抽象工廠模式還要滿足以下條件: 系統(tǒng)中有多個(gè)產(chǎn)品族,而系統(tǒng)一次...
閱讀 2741·2021-11-22 15:22
閱讀 1653·2021-11-22 14:56
閱讀 3629·2021-09-22 15:12
閱讀 2415·2021-09-02 15:41
閱讀 2139·2021-08-27 16:26
閱讀 1126·2019-08-30 15:55
閱讀 2151·2019-08-29 17:30
閱讀 680·2019-08-29 16:26