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

C# 設計模式:抽象工廠模式深度解析(五)— 整合多國業務規則與介面抽象

     編輯:關於C語言

系統演進痛點回顧

  • 初版:僅支援中企,硬編碼 ChineseTax、ChineseBonus
  • 美企採購:捨棄中企類別,重寫美企版本,修改 Calculator
  • 中企再次採購:又得改回中企版本,反覆折騰

第一步:保留所有業務規則類別

系統同時保留中美兩套實作,Calculator 透過條件判斷決定使用哪套。雖避免重寫,但切換仍需修改 Calculator 代碼。

第二步:引入介面實現「開閉原則」

定義 Tax、Bonus 介面,四個具體類別分別實作:

public interface Tax { double Calculate(); }
public interface Bonus { double Calculate(); }

public class ChineseTax : Tax { public double Calculate() => 4000 * 0.4; }
public class ChineseBonus : Bonus { public double Calculate() => 4000 * 0.1; }
public class AmericanTax : Tax { public double Calculate() => (4000 + 400) * 0.4; }
public class AmericanBonus : Bonus { public double Calculate() => 4000 * 0.1; }

客戶端代碼(仍需手動切換)

public class Calculator
{
    public static void Main(string[] args)
    {
        Bonus bonus = new ChineseBonus();  // 此處仍硬編碼
        Tax tax = new ChineseTax();        // 切換國家需修改此處

        double salary = 4000 + bonus.Calculate() - tax.Calculate();
        Console.WriteLine("Chinese Salary is:" + salary);
    }
}

核心收穫

  • 業務規則現在依賴抽象介面,而非具體實作
  • 新增國家只需新增實作類別,**不修改既有代碼**(符合 OCP)
  • 但客戶端仍硬編碼具體類別,需進一步引入工廠模式解決

下一階段預告

引入 Factory 類別封裝物件建立,將具體類別名稱從客戶端移除,邁向抽象工廠模式完整形態。

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