首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式:抽象工廠模式深度解析(六)— 工廠方法封裝物件建立

     編輯:關於C語言

介面引入後的殘留問題

雖引入 Tax、Bonus 介面,但客戶端 Calculator 仍需 `new ChineseBonus()`、`new ChineseTax()`。切換至美企時仍需修改客戶端代碼,且若源碼不提供給移植廠商,移植無法進行。

引入工廠類別封裝建立邏輯

新增 Factory 工具類,集中管理具體類別的實例化:

public class Factory
{
    public Tax CreateTax() => new ChineseTax();
    public Bonus CreateBonus() => new ChineseBonus();
}

客戶端簡化

public class Calculator
{
    public static void Main(string[] args)
    {
        Bonus bonus = new Factory().CreateBonus();
        double bonusValue = bonus.Calculate();

        Tax tax = new Factory().CreateTax();
        double taxValue = tax.Calculate();

        double salary = 4000 + bonusValue - taxValue;
        Console.WriteLine("Chinese Salary is:" + salary);
        Console.ReadLine();
    }
}

現狀分析

  • ✅ 客戶端不再直接 new 具體類別,依賴工廠方法
  • ✅ 切換國家時,只需修改 Factory 類別
  • ❌ 但 Factory 本身仍硬編碼具體類別,移植仍需修改源碼
  • ❌ 違反開閉原則:新增國家需修改既有代碼

下一步演進方向

將 Factory 拆分為 ChineseFactory、AmericanFactory 等具體工廠,再引入抽象工廠統一管理,配合組態檔實現零代碼修改切換——這就是下一集的重點。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved