1
2using System;
3
4namespace InterfaceSalary
5{
6 /**//// <summary>
7 /// 客户端程序调用
8 /// </summary>
9 public class Calculator
10 {
11 public static void Main(string[] args)
12 {
13 Bonus bonus = new ChineseBonus();
14 double bonusValue = bonus.Calculate();
15
16 Tax tax = new ChineseTax();
17 double taxValue = tax.Calculate();
18
19 double salary = 4000 + bonusValue - taxValue;
20
21 Console.WriteLine("Chinaese Salary is:" + salary);
22 Console.ReadLine();
23 }
24 }
25}
26
为业务规则增加工厂方法
然而,上面增加的接口几乎没有解决任何问题,因为当系统的客户在美国和中国企业间切换时Caculator代码仍然需要修改。
只不过修改少了两处,但是仍然需要修改ChineseBonus,ChineseTax部分。致命的问题是:我们需要将这个移植工作转包给一个叫Hippo的软件公司。 由于版权问题,我们并未提供Softo系统的源码给Hippo公司,因此Hippo公司根本无法修改Calculator,导致实际上移植工作无法进行。
为此,我们考虑增加一个工具类(命名为Factory),代码如下:
1using System;
2
3namespace FactorySalary
4{
5 /**//// <summary>
6 /// Factory类
7 /// </summary>
8 public class Factory
9 {
10 public Tax CreateTax()
11 {
12 return new ChineseTax();
13 }
14
15 public Bonus CreateBonus()
16 {
17 return new ChineseBonus();
18 }
19 }
20}
21
文章来源于领测软件测试网 https://www.ltesting.net/