引言
工廠方法模式是一種創建型設計模式,它定義了一個用于創建物件的介面,但是讓子類決定將哪一個類實體化,換句話說,工廠方法模式讓一個類的實體化延遲到其子類,
工廠方法模式有以下幾個主要角色:
-
抽象工廠(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 ,控制元件庫,多執行緒
本文著作權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段宣告,且在文章頁面明顯位置給出 原文鏈接,否則保留追究法律責任的權利, 如有問題, 可郵件咨詢,
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/556893.html
標籤:其他
下一篇:返回列表