設計模式----抽象工廠模式UML和實現代碼

1、什麼是抽象工廠模式?

定義:抽象工廠模式(Abstract Factory),提供一個建立一系列相關或相互依賴對象的接口,而無需指定它們具體的類
java

當每一個抽象產品都有多於一個的具體子類的時候,工廠角色怎麼知道實例化哪個子類呢?好比每一個抽象產品角色都有兩個具體產品。抽象工廠模式提供兩個具體工廠角色,分別對應於這兩個具體產品角色,每個具體工廠角色只負責某一個產品角色的實例化。每個具體工廠類只負責建立抽象產品的某一個具體子類的實例。
git

每個模式都是針對必定問題的解決方案,工廠方法模式針對的是一個產品等級結構;而抽象工廠模式針對的是多個產品等級結構。github

2、抽象工廠模式UML圖

、抽象工廠模式JAVA版

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 !!

相關文章
相關標籤/搜索