工廠模式
1. 簡單工廠
理解
簡單工廠模式的工廠類別一般是使用靜態方法,透過接收的參數的不同來傳回不同的物件實例。
不修改程式碼的話,是無法擴充的。
範例
產品介面
//產品介面
public interface ProductI {
public void productName();
}
產品實體類
public void productName() {
System .out.println("product A");
}
}
public class ProductB implements ProductI {
@Override
}
工廠類別
// 簡單工廠模式
public class Factory {
public ProductI create(String productName) {
return new ProductA();
case "B": case "B": new ProductB();
default:
public class Client {
public static void main(String[] args) {
Factory factory = new Factory();
productA = factory.create("A");
productA.productName();
//
Name();
}
}
輸出
product A
product B
工廠方法
理解
工廠方法是針對每種產品提供一個工廠類別。透過不同的工廠實例來建立不同的產品實例。
在同一等級結構中, 支援增加任意產品 。
範例
產品介面和產品實體類別和簡單工廠都一樣。
工廠介面
public interface FactoryI {
// 工廠的目的是為了生產產品
public ProductI create();
工廠實體類
public ProductI create() {
return new ProductA();
}
}
public class FactoryB implements FactoryI {
I ;
}
}
測試類別
// 工廠方法模式
public class Client {
public static void main(String[] args) {
FactoryI factoryA = new FactoryA(); ductA.productName();
//
FactoryI factoryB = new FactoryB();
ProductI productB = factoryB.create();
productB.productName();
ct
抽象工廠
理解
抽象工廠是應對產品族概念的。比如說,每個汽車公司可能要同時生產轎車,貨車,客車,那麼每個工廠都要有創建轎車,貨車和客車的方法。
應對產品族概念而生,增加新的產品線很容易,但是無法增加新的產品。
和工廠方法的差別是,抽象工廠往往有多種方法,可以生產多種產品,即產品簇。
範例
抽象工廠類別
// 抽線工廠模式
public interface AbstractFactory {
public ProductAI createProductA(); ct );
公用類別Factory1 實作AbstractFactory {
@Override
public ProductAI createProductA() {
return new ProductA1();
return new ProductA1(); 🎠 B() {
return new ProductB1();
}
}
public class Factory2 實作AbstractFactory {
@Override
public ProductAI createProductA() {
return new ProductA2(); ) {
return new ProductB2();
}
}
產品介面
//產品介面
公用介面ProductBI {
public void ProductName();
}
//產品介面
public interface ProductAI {
ductAI {
@Override
public void ProductName() {
System.out.println("product A1");
}
}
糰
}
}
.PM