1. 程式人生 > >設計模式:抽象工廠模式(Abstract Factory Pattern)

設計模式:抽象工廠模式(Abstract Factory Pattern)

/**
 * 抽象工廠模式。<br/>
 * 抽象工廠模式提供一個介面,用於建立相關或依賴物件的家族,而不需要明確指定具體類。
 * @author Bright Lee
 */
public class AbstractFactoryPattern {

	public static void main(String[] args) {
		AbstractFactory factory001 = new ConcreteFactory001();
		Client client001 = new Client(factory001);
		client001.doSomething();
		
		AbstractFactory factory002 = new ConcreteFactory002();
		Client client002 = new Client(factory002);
		client002.doSomething();
	}

}

class Client {
	
	private AbstractFactory factory;
	
	/**
	 * 客戶只需要知道傳入的是一個抽象工廠,而不需要知道工廠的具體型別。
	 */
	public Client(AbstractFactory factory) {
		this.factory = factory;
	}
	
	public void doSomething() {
		Product product = factory.createProduct();
		System.out.println("獲得的產品是:" + product);
	}
	
}

interface AbstractFactory {
	
	/**
	 * 抽象工廠的所有程式碼均由子類實現。
	 */
	public Product createProduct();
	
}

class ConcreteFactory001 implements AbstractFactory {

	public Product createProduct() {
		return new Product001();
	}
	
}

class ConcreteFactory002 implements AbstractFactory {

	public Product createProduct() {
		return new Product002();
	}
	
}

interface Product {
}

class Product001 implements Product {
	
	public String toString() {
		return "Product001";
	}
	
}

class Product002 implements Product {
	
	public String toString() {
		return "Product002";
	}
	
}

執行結果:
獲得的產品是:Product001
獲得的產品是:Product002