工廠模式用于創建對象而不將具體類的代碼與客戶端代碼混合在一起,從而使一個類的實例化延遲到其子類。
示例代碼:
// 抽象產品
public interface IProduct
{ void Use();
} // 具體產品A
public class ConcreteProductA : IProduct
{ public void Use() { Console.WriteLine("Using ConcreteProductA"); }
} // 具體產品B
public class ConcreteProductB : IProduct
{ public void Use() { Console.WriteLine("Using ConcreteProductB"); }
} // 工廠類
public class ProductFactory
{ public static IProduct CreateProduct(string type) { switch (type) { case "A": return new ConcreteProductA(); case "B": return new ConcreteProductB(); default: throw new ArgumentException("Invalid product type"); } }
} // 客戶端代碼
class Program
{ static void Main(string[] args) { IProduct productA = ProductFactory.CreateProduct("A"); productA.Use(); IProduct productB = ProductFactory.CreateProduct("B"); productB.Use(); }
}