定義:抽象工廠模式(Abstract Factory),提供一個建立一系列相關或相互依賴對象的接口,而無需指定它們具體的類
java
當每一個抽象產品都有多於一個的具體子類的時候,工廠角色怎麼知道實例化哪個子類呢?好比每一個抽象產品角色都有兩個具體產品。抽象工廠模式提供兩個具體工廠角色,分別對應於這兩個具體產品角色,每個具體工廠角色只負責某一個產品角色的實例化。每個具體工廠類只負責建立抽象產品的某一個具體子類的實例。
git
每個模式都是針對必定問題的解決方案,工廠方法模式針對的是一個產品等級結構;而抽象工廠模式針對的是多個產品等級結構。github
AbstractFactory.javaide
package com.amosli.dp.build.abstractfactory; public abstract class AbstractFactory { public abstract AbstractProductA createProductA(); public abstract AbstractProductB createProductB(); }
AbstractProductA.javaui
package com.amosli.dp.build.abstractfactory; public abstract class AbstractProductA { public abstract void show(); }
AbstractProductB.javaspa
package com.amosli.dp.build.abstractfactory; public abstract class AbstractProductB { public abstract void display(); }
Factory1.javacode
package com.amosli.dp.build.abstractfactory; public class Factory1 extends AbstractFactory{ @Override public AbstractProductA createProductA() { return new ProductA1(); } @Override public AbstractProductB createProductB() { return new ProductB1(); } }
Factory2.java 與Factory1.java相似 這裏就再也不列出來了。orm
ProductA1.java對象
package com.amosli.dp.build.abstractfactory; public class ProductA1 extends AbstractProductA{ @Override public void show() { System.out.println("a1"); } }
ProductA2.java ProductB1.java ProductB2.java與ProductA1.java相似接口
本系列文章源碼地址,https://github.com/amosli/dp 歡迎Fork & Star !!