設計模式之禪—23種設計模式詳解_3 抽象工廠模式

抽象工廠模式:爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類

       個人覺得這個區別在於產品,如果產品單一,最合適用工廠模式,但是如果有多個業務品種、業務分類時,通過抽象工廠模式產生需要的對象是一種非常好的解決方式。再通俗深化理解下:工廠模式針對的是一個產品等級結構 ,抽象工廠模式針對的是面向多個產品等級結構的。

再來看看工廠方法模式與抽象工廠模式對比:

示例代碼:
public class AbstractFactory {
	public static void main(String args[]){
		IFactory bigfactory = new BigFactory();
		IFactory smallfactory = new BigFactory();
		bigfactory.producePhone().run();
		bigfactory.produceHeadset().play();
		smallfactory.producePhone().run();
		smallfactory.produceHeadset().play();
	}
}
//抽象產品*2
interface Headset{
	void play();
}
//抽象產品
interface MeizuPhone{
	void run();
}
//具體產品*2*2
class PRO5 implements MeizuPhone{
	@Override
	public void run() {
		System.out.println("我是一臺PRO5");
	}
}
class MX5 implements MeizuPhone{
	@Override
	public void run() {
		System.out.println("我是一臺MX5");
	}
}
class EP21 implements Headset{
	@Override
	public void play() {
		System.out.println("我是一副EP21");
	}
}
class EP30 implements Headset{
	@Override
	public void play() {
		System.out.println("我是一臺EP30");
	}
}
//抽象工廠
interface IFactory{
	MeizuPhone producePhone();
	Headset produceHeadset();
}
//具體工廠*2
class BigFactory implements IFactory{
	@Override
	public MeizuPhone producePhone() {
		return new PRO5();
	}
	@Override
	public Headset produceHeadset() {
		return new EP30();
	}
}
//具體工廠*2
class SmallFactory implements IFactory{
	@Override
	public MeizuPhone producePhone() {
		return new MX5();
	}
	@Override
	public Headset produceHeadset() {
		return new EP21();
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章