## 引言 **工廠方法模式**是一種創建型設計模式,它定義了一個用於創建對象的介面,但是讓子類決定將哪一個類實例化。換句話說,工廠方法模式讓一個類的實例化延遲到其子類。 工廠方法模式有以下幾個主要角色: - 抽象工廠(AbstractFactory):聲明用於創建抽象產品的操作的介面。 - 工廠實 ...
引言
工廠方法模式是一種創建型設計模式,它定義了一個用於創建對象的介面,但是讓子類決定將哪一個類實例化。換句話說,工廠方法模式讓一個類的實例化延遲到其子類。
工廠方法模式有以下幾個主要角色:
-
抽象工廠(AbstractFactory):聲明用於創建抽象產品的操作的介面。
-
工廠實現(ConcreteFactory):實現創建具體產品對象的操作。
-
抽象產品(AbstractProduct):聲明產品對象類型的介面。
-
產品實現(Product):定義由相應的具體工廠創建的產品對象,實現AbstractProduct介面。
下麵使用c#實現一個工廠方法模式:
抽象工廠
public abstract class Factory
{
public abstract Product CreateProduct();
}
工廠實現
// 具體工廠類
public class ConcreteFactoryA : Factory
{
public override Product CreateProduct()
{
return new ConcreteProductA();
}
}
public class ConcreteFactoryB : Factory
{
public override Product CreateProduct()
{
return new ConcreteProductB();
}
}
抽象產品
// 抽象產品類
public abstract class Product
{
public abstract void ShowInfo();
}
產品實現
// 具體產品類
public class ConcreteProductA : Product
{
public override void ShowInfo()
{
Console.WriteLine("This is product A.");
}
}
public class ConcreteProductB : Product
{
public override void ShowInfo()
{
Console.WriteLine("This is product B.");
}
}
下麵可以這樣調用:
Factory factoryA = new ConcreteFactoryA();
Product productA = factoryA.CreateProduct();
productA.ShowInfo();
Factory factoryB = new ConcreteFactoryB();
Product productB = factoryB.CreateProduct();
productB.ShowInfo();
輸出:
This is product A.
This is product B.
在上面的示例中,Product
是抽象產品類,ConcreteProductA
和 ConcreteProductB
是具體產品類,Factory
是抽象工廠類,ConcreteFactoryA
和 ConcreteFactoryB
是具體工廠類。客戶端代碼使用工廠類創建產品對象,並調用其方法。
總結
當需要添加新的產品時,只需創建一個新的具體產品類,並實現抽象產品類中的抽象方法即可。當需要添加新的工廠時,只需創建一個新的具體工廠類,並實現抽象工廠類中的抽象方法即可。這樣,客戶端代碼就不需要改變。這也是工廠方法模式的一個重要優點,它讓代碼更加靈活,易於擴展和維護。
作者: Peter.Pan
出處: https://www.cnblogs.com/pandefu/>
關於作者:.Net Framework,.Net Core ,WindowsForm,WPF ,控制項庫,多線程
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出 原文鏈接,否則保留追究法律責任的權利。 如有問題, 可郵件咨詢。