科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道C#设计模式编程之抽象工厂模式新解(二)

C#设计模式编程之抽象工厂模式新解(二)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

 虚拟案例    中国企业需要一项简单的财务计算:每月月底,财务人员要计算员工的工资。

作者:中国IT实验室 来源:中国IT实验室 2007年9月12日

关键字: C# DotNet 编程 通盘

  • 评论
  • 分享微博
  • 分享邮件
¡¡¡¡

¡¡¡¡ÐéÄâ°¸Àý

¡¡¡¡ÖйúÆóÒµÐèÒªÒ»Ïî¼òµ¥µÄ²ÆÎñ¼ÆË㣺ÿÔÂÔµף¬²ÆÎñÈËÔ±Òª¼ÆËãÔ±¹¤µÄ¹¤×Ê¡£

¡¡¡¡Ô±¹¤µÄ¹¤×Ê = (»ù±¾¹¤×Ê + ½±½ð - ¸öÈËËùµÃË°)¡£ÕâÊÇÒ»¸ö·ÅÖ®Ëĺ£½Ô×¼µÄÔËËã·¨Ôò¡£

¡¡¡¡ÎªÁ˼ò»¯ÏµÍ³£¬ÎÒÃǼÙÉèÔ±¹¤»ù±¾¹¤×Ê×ÜÊÇ4000ÃÀ½ð¡£

¡¡¡¡ÖйúÆóÒµ½±½ðºÍ¸öÈËËùµÃË°µÄ¼ÆËã¹æÔòÊÇ:

¡¡¡¡½±½ð = »ù±¾¹¤×Ê(4000) * 10%

¡¡¡¡¸öÈËËùµÃË° = (»ù±¾¹¤×Ê + ½±½ð) * 40%

¡¡¡¡ÎÒÃÇÏÖÔÚҪΪ´Ë¹¹½¨Ò»¸öÈí¼þϵͳ£¨´úºÅ½ÐSofto£©£¬Âú×ãÖйúÆóÒµµÄÐèÇó¡£

¡¡¡¡°¸Àý·ÖÎö

¡¡¡¡½±½ð(Bonus)¡¢¸öÈËËùµÃË°(Tax)µÄ¼ÆËãÊÇSoftoϵͳµÄÒµÎñ¹æÔò(Service)¡£

¡¡¡¡¹¤×ʵļÆËã(Calculator)Ôòµ÷ÓÃÒµÎñ¹æÔò(Service)À´¼ÆËãÔ±¹¤µÄʵ¼Ê¹¤×Ê¡£

¡¡¡¡¹¤×ʵļÆËã×÷ΪҵÎñ¹æÔòµÄÇ°¶Ë(»òÕß¿Í»§¶ËClient)½«Ìṩ¸ø×îÖÕʹÓøÃϵͳµÄÓû§(²ÆÎñÈËÔ±)ʹÓá£

¡¡¡¡Õë¶ÔÖйúÆóҵΪϵͳ½¨Ä£

¡¡¡¡¸ù¾ÝÉÏÃæµÄ·ÖÎö£¬ÎªSoftoϵͳ½¨Ä£ÈçÏ£º

 

¡¡¡¡ÔòÒµÎñ¹æÔòServiceÀàµÄ´úÂëÈçÏ£º

1using System;
2
3namespace ChineseSalary
4{
5 /**//// £¼summary>
6 /// ¹«Óõij£Á¿
7 /// £¼/summary>
8 public class Constant
9 {
10 public static double BASE_SALARY = 4000;
11 }
12}
1using System;
2
3namespace ChineseSalary
4{
5 /**//// £¼summary>
6 /// ¼ÆËãÖйú¸öÈ˽±½ð
7 /// £¼/summary>
8 public class ChineseBonus
9 {
10 public double Calculate()
11 {
12 return Constant.BASE_SALARY * 0.1;
13 }
14 }
15}
16

¡¡¡¡¿Í»§¶ËµÄµ÷ÓôúÂ룺

1using System;
2
3namespace ChineseSalary
4{
5 /**//// £¼summary>
6 /// ¼ÆËãÖйú¸öÈËËùµÃË°
7 /// £¼/summary>
8 public class ChineseTax
9 {
10 public double Calculate()
11 {
12 return (Constant.BASE_SALARY + (Constant.BASE_SALARY * 0.1)) * 0.4;
13 }
14 }
15}
16

¡¡¡¡ÔËÐгÌÐò£¬ÊäÈëµÄ½á¹ûÈçÏ£º

¡¡¡¡Chinese Salary is£º2640

¡¡¡¡Õë¶ÔÃÀ¹úÆóҵΪϵͳ½¨Ä£

¡¡¡¡ÎªÁËÍØÕ¹¹ú¼ÊÊг¡£¬ÎÒÃÇÒª°Ñ¸ÃϵͳÒÆÖ²¸øÃÀ¹ú¹«Ë¾Ê¹ÓᣠÃÀ¹úÆóÒµµÄ¹¤×ʼÆËãͬÑùÊÇ: Ô±¹¤µÄ¹¤×Ê = »ù±¾¹¤×Ê + ½±½ð - ¸öÈËËùµÃË°¡£

¡¡¡¡µ«ÊÇËûÃǵĽ±½ðºÍ¸öÈËËùµÃË°µÄ¼ÆËã¹æÔò²»Í¬ÓÚÖйúÆóÒµ:

¡¡¡¡ÃÀ¹úÆóÒµ½±½ðºÍ¸öÈËËùµÃË°µÄ¼ÆËã¹æÔòÊÇ:

¡¡¡¡½±½ð = »ù±¾¹¤×Ê * 15 %

¡¡¡¡¸öÈËËùµÃË° = (»ù±¾¹¤×Ê * 5% + ½±½ð * 25%)

¡¡¡¡¸ù¾ÝÇ°ÃæΪÖйúÆóÒµ½¨Ä£¾­Ñ飬ÎÒÃǽö½ö½«ChineseTax¡¢ChineseBonusÐÞ¸ÄΪAmericanTax¡¢AmericanBonus¡£ Ð޸ĺóµÄÄ£ÐÍÈçÏ£º

 

¡¡¡¡ÔòÒµÎñ¹æÔòServiceÀàµÄ´úÂëÈçÏ£º

1using System;
2
3namespace AmericanSalary
4{
5 /**//// £¼summary>
6 /// ¹«Óõij£Á¿
7 /// £¼/summary>
8 public class Constant
9 {
10 public static double BASE_SALARY = 4000;
11 }
12}
13


1using System;
2
3namespace AmericanSalary
4{
5 /**//// £¼summary>
6 /// ¼ÆËãÃÀ¹ú¸öÈ˽±½ð
7 /// £¼/summary>
8 public class AmericanBonus
9 {
10 public double Calculate()
11 {
12 return Constant.BASE_SALARY * 0.1;
13 }
14 }
15}
16

1using System;
2
3namespace AmericanSalary
4{
5 /**//// £¼summary>
6 /// ¼ÆËãÃÀ¹ú¸öÈËËùµÃË°
7 /// £¼/summary>
8 public class AmericanTax
9 {
10 public double Calculate()
11 {
12 return (Constant.BASE_SALARY + (Constant.BASE_SALARY * 0.1)) * 0.4;
13 }
14 }
15}
16

¡¡¡¡¿Í»§¶ËµÄµ÷ÓôúÂ룺

1
2using System;
3
4namespace AmericanSalary
5{
6 /**//// £¼summary>
7 /// ¿Í»§¶Ë³ÌÐòµ÷ÓÃ
8 /// £¼/summary>
9 public class Calculator
10 {
11 public static void Main(string[] args)
12 {
13 AmericanBonus bonus = new AmericanBonus();
14 double bonusValue = bonus.Calculate();
15
16 AmericanTax tax = new AmericanTax();
17 double taxValue = tax.Calculate();
18
19 double salary = 4000 + bonusValue - taxValue;
20
21 Console.WriteLine("American Salary is£º" + salary);
22 Console.ReadLine();
23 }
24 }
25}
26


¡¡¡¡ÔËÐгÌÐò£¬ÊäÈëµÄ½á¹ûÈçÏ£º

¡¡¡¡American Salary is£º2640

²é¿´±¾ÎÄÀ´Ô´

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章