Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
.NETÉè¼ÆÄ£Ê½£¨3£©£º³éÏ󹤳§Ä£Ê½£¨Abstract Factory£©
 
×÷Õß Àî»á¾ü£¬»ðÁú¹ûÈí¼þ    ·¢²¼ÓÚ 2014-09-10
  2847  次浏览      27
 

¸ÅÊö

ÔÚÈí¼þϵͳÖУ¬¾­³£ÃæÁÙ×Å¡°Ò»ÏµÁÐÏ໥ÒÀÀµµÄ¶ÔÏ󡱵Ĵ´½¨¹¤×÷£»Í¬Ê±ÓÉÓÚÐèÇóµÄ±ä»¯£¬ÍùÍù´æÔÚןü¶àϵÁжÔÏóµÄ´´½¨¹¤×÷¡£ÈçºÎÓ¦¶ÔÕâÖֱ仯£¿ÈçºÎÈÆ¹ý³£¹æµÄ¶ÔÏóµÄ´´½¨·½·¨£¨new£©£¬ÌṩһÖÖ¡°·â×°»úÖÆ¡±À´±ÜÃâ¿Í»§³ÌÐòºÍÕâÖÖ¡°¶àϵÁоßÌå¶ÔÏó´´½¨¹¤×÷¡±µÄ½ôñîºÏ£¿Õâ¾ÍÊÇÎÒÃÇҪ˵µÄ³éÏ󹤳§Ä£Ê½¡£

Òâͼ

Ìṩһ¸ö´´½¨Ò»ÏµÁÐÏà¹Ø»òÏ໥ÒÀÀµ¶ÔÏóµÄ½Ó¿Ú£¬¶øÎÞÐèÖ¸¶¨ËüÃǾßÌåµÄÀà¡£

Ä£ÐÍͼ

Âß¼­Ä£ÐÍ£º

ÎïÀíÄ£ÐÍ£º

Éú»îÖеÄÀý×Ó

³éÏ󹤳§µÄÄ¿µÄÊÇÒªÌṩһ¸ö´´½¨Ò»ÏµÁÐÏà¹Ø»òÏ໥ÒÀÀµ¶ÔÏóµÄ½Ó¿Ú£¬¶ø²»ÐèÒªÖ¸¶¨ËüÃǾßÌåµÄÀà¡£ÕâÖÖģʽ¿ÉÒÔÆû³µÖÆÔì³§ËùʹÓõĽðÊô³åѹÉ豸ÖÐÕÒµ½¡£ÕâÖÖ³åѹÉ豸¿ÉÒÔÖÆÔìÆû³µ³µÉí²¿¼þ¡£Í¬ÑùµÄ»úеÓÃÓÚ³åѹ²»Í¬µÄ³µÐ͵ÄÓұ߳µÃÅ¡¢×ó±ß³µÃÅ¡¢ÓÒǰµ²Äà°å¡¢×óǰµ²Äà°åºÍÒýÇæÕֵȵȡ£Í¨¹ýʹÓÃתÂÖÀ´¸Ä±ä³åѹÅÌ£¬Õâ¸ö»úе²úÉúµÄ¾ßÌåÀà¿ÉÒÔÔÚÈý·ÖÖÓÄڸı䡣

³éÏ󹤳§Ö®Ð½â

ÐéÄâ°¸Àý

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

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

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

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

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

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

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

°¸Àý·ÖÎö

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

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

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

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

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

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

using 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}

using 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}

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

using 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}

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

Chinese Salary is£º2640

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

ΪÁËÍØÕ¹¹ú¼ÊÊг¡£¬ÎÒÃÇÒª°Ñ¸ÃÏµÍ³ÒÆÖ²¸øÃÀ¹ú¹«Ë¾Ê¹Óá£

ÃÀ¹úÆóÒµµÄ¹¤×ʼÆËãͬÑùÊÇ: Ô±¹¤µÄ¹¤×Ê = »ù±¾¹¤×Ê + ½±½ð - ¸öÈËËùµÃ˰¡£

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

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

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

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

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

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

using 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}

using 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}

using 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}

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

using 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}

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

American Salary is£º2640

ÕûºÏ³ÉͨÓÃϵͳ

ÈÃÎÒÃǻعËһϸÃϵͳµÄ·¢Õ¹Àú³Ì£º

×î³õ£¬ÎÒÃÇÖ»¿¼Âǽ«SoftoϵͳÔËÐÐÓÚÖйúÆóÒµ¡£µ«Ëæ×ÅMaxDO¹«Ë¾ÒµÎñÏòº£ÍâÍØÕ¹£¬ MaxDOÐèÒª½«¸ÃÏµÍ³ÒÆÖ²¸øÃÀ¹úʹÓá£

ÒÆÖ²Ê±£¬MaxDO²»µÃ²»ÅׯúÖйúÆóÒµµÄÒµÎñ¹æÔòÀàChineseTaxºÍChineseBonus£¬ È»ºóΪÃÀ¹úÆóҵн¨Á½¸öÒµÎñ¹æÔòÀà: AmericanTax,AmericanBonus¡£×îºóÐÞ¸ÄÁËÒµÎñ¹æÔòµ÷ÓÃCalculatorÀà¡£

½á¹ûÎÒÃÇ·¢ÏÖ£ºÃ¿µ±SoftoÏµÍ³ÒÆÖ²µÄʱºò£¬¾ÍÅׯúÔ­À´µÄÀà¡£ÏÖÔÚ£¬Èç¹ûÖйúÁªÏ뼯ÍÅÒª¹ºÂò¸Ãϵͳ£¬ÎÒÃDz»µÃ²»ÔÙ´ÎÅׯúAmericanTax,AmericanBonus£¬Ð޸ĻØÔ­À´µÄÒµÎñ¹æÔò¡£

Ò»¸ö¿ÉÒÔÁ¢¼´Ïëµ½µÄ×ö·¨¾ÍÊÇÔÚϵͳÖб£ÁôËùÓÐÒµÎñ¹æÔòÄ£ÐÍ£¬¼´±£ÁôÖйúºÍÃÀ¹úÆóÒµ¹¤×ÊÔËËã¹æÔò¡£

ͨ¹ý±£ÁôÖйúÆóÒµºÍÃÀ¹úÆóÒµµÄÒµÎñ¹æÔòÄ£ÐÍ£¬Èç¹û¸ÃϵͳÔÚÃÀ¹úÆóÒµºÍÖйúÆóÒµÖ®¼äÇл»Ê±£¬ÎÒÃǽö½öÐèÒªÐÞ¸ÄCaculatorÀ༴¿É¡£

ÈÃÒÆÖ²¹¤×÷¸ü¼òµ¥

Ç°ÃæÏµÍ³µÄÕûºÏÎÊÌâÔÚÓÚ£ºµ±ÏµÍ³ÔÚ¿Í»§ÔÚÃÀ¹úºÍÖйúÆóÒµ¼äÇл»Ê±ÈÔÈ»ÐèÒªÐÞ¸ÄCaculator´úÂë¡£

Ò»¸öά»¤ÐÔÁ¼ºÃµÄϵͳӦ¸Ã×ñÑ­¡°¿ª±ÕÔ­Ôò¡±¡£¼´£º·â±Õ¶ÔÔ­À´´úÂëµÄÐ޸ģ¬¿ª·Å¶ÔÔ­À´´úÂëµÄÀ©Õ¹£¨ÈçÀàµÄ¼Ì³Ð£¬½Ó¿ÚµÄʵÏÖ£©

ÎÒÃÇ·¢ÏÖ²»ÂÛÊÇÖйúÆóÒµ»¹ÊÇÃÀ¹úÆóÒµ£¬ËûÃǵÄÒµÎñÔ˹æÔò¶¼²ÉÓÃͬÑùµÄ¼ÆËã½Ó¿Ú¡£ ÓÚÊǺÜ×ÔÈ»µØÏëµ½½¨Á¢Á½¸öÒµÎñ½Ó¿ÚÀàTax£¬Bonus£¬È»ºóÈÃAmericanTax¡¢AmericanBonusºÍChineseTax¡¢ChineseBonus·Ö±ðʵÏÖÕâÁ½¸ö½Ó¿Ú£¬ ¾Ý´ËÐÞÕýºóµÄÄ£ÐÍÈçÏ£º

´Ëʱ¿Í»§¶Ë´úÂëÈçÏ£º

using 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}

ΪҵÎñ¹æÔòÔö¼Ó¹¤³§·½·¨

È»¶ø£¬ÉÏÃæÔö¼ÓµÄ½Ó¿Ú¼¸ºõûÓнâ¾öÈκÎÎÊÌ⣬ÒòΪµ±ÏµÍ³µÄ¿Í»§ÔÚÃÀ¹úºÍÖйúÆóÒµ¼äÇл»Ê±Caculator´úÂëÈÔÈ»ÐèÒªÐ޸ġ£

Ö»²»¹ýÐÞ¸ÄÉÙÁËÁ½´¦£¬µ«ÊÇÈÔÈ»ÐèÒªÐÞ¸ÄChineseBonus,ChineseTax²¿·Ö¡£ÖÂÃüµÄÎÊÌâÊÇ£ºÎÒÃÇÐèÒª½«Õâ¸öÒÆÖ²¹¤×÷ת°ü¸øÒ»¸ö½ÐHippoµÄÈí¼þ¹«Ë¾¡£ ÓÉÓÚ°æÈ¨ÎÊÌ⣬ÎÒÃDz¢Î´ÌṩSoftoϵͳµÄÔ´Âë¸øHippo¹«Ë¾£¬Òò´ËHippo¹«Ë¾¸ù±¾ÎÞ·¨ÐÞ¸ÄCalculator£¬µ¼ÖÂʵ¼ÊÉÏÒÆÖ²¹¤×÷ÎÞ·¨½øÐС£

Ϊ´Ë£¬ÎÒÃÇ¿¼ÂÇÔö¼ÓÒ»¸ö¹¤¾ßÀà(ÃüÃûΪFactory)£¬´úÂëÈçÏ£º

using 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}

Ð޸ĺóµÄ¿Í»§¶Ë´úÂ룺


2using System;
3
4namespace FactorySalary
5{
6 /// <summary>
7 /// ¿Í»§¶Ë³ÌÐòµ÷ÓÃ
8 /// </summary>
9 public class Calculator
10 {
11 public static void Main(string[] args)
12 {
13 Bonus bonus = new Factory().CreateBonus();
14 double bonusValue = bonus.Calculate();
15
16 Tax tax = new Factory().CreateTax();
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}

²»´í£¬ÎÒÃǽâ¾öÁËÒ»¸ö´óÎÊÌ⣬ÉèÏëһϣºµ±¸Ãϵͳ´ÓÖйúÆóÒµÒÆÖ²µ½ÃÀ¹úÆóҵʱ£¬ÎÒÃÇÏÖÔÚÐèÒª×öʲô£¿

´ð°¸ÊÇ: ¶ÔÓÚCaculatorÀàÎÒÃÇʲôҲ²»ÓÃ×ö¡£ÎÒÃÇÐèÒª×öµÄÊÇÐÞ¸ÄFactoryÀ࣬Ð޸Ľá¹ûÈçÏ£º

using System;
2
3namespace FactorySalary
4{
5 /// <summary>
6 /// FactoryÀà
7 /// </summary>
8 public class Factory
9 {
10 public Tax CreateTax()
11 {
12 return new AmericanTax();
13 }
14
15 public Bonus CreateBonus()
16 {
17 return new AmericanBonus();
18 }
19 }
20}

ΪϵͳÔö¼Ó³éÏ󹤳§·½·¨

ºÜÏÔÈ»£¬Ç°ÃæµÄ½â¾ö·½°¸´øÀ´ÁËÒ»¸ö¸±×÷Ó㺾ÍÊÇϵͳ²»µ«Ôö¼ÓÁËеÄÀàFactory£¬¶øÇÒµ±ÏµÍ³ÒÆÖ²Ê±£¬ÒÆÖ²¹¤×÷½ö½öÊÇ×ªÒÆµ½FactoryÀàÉÏ£¬¹¤×÷Á¿²¢Ã»ÓÐÈκÎËõ¼õ£¬¶øÇÒ»¹ÊÇÒªÐÞ¸ÄϵͳµÄÔ´Âë¡£ ´ÓFactoryÀàÔÚÏµÍ³ÒÆÖ²Ê±Ð޸ĵÄÄÚÈÝÎÒÃÇ¿ÉÒÔ¿´³ö: ʵ¼ÊÉÏËüÊÇרÊôÓÚÃÀ¹úÆóÒµ»òÕßÖйúÆóÒµµÄ¡£Ãû³ÆÉÏÓ¦¸Ã½ÐAmericanFactory,ChineseFactory¸üºÏÊÊ.

½â¾ö·½°¸ÊÇÔö¼ÓÒ»¸ö³éÏ󹤳§ÀàAbstractFactory£¬Ôö¼ÓÒ»¸ö¾²Ì¬·½·¨£¬¸Ã·½·¨¸ù¾ÝÒ»¸öÅäÖÃÎļþ(App.config»òÕßWeb.config) Ò»¸öÏî(±ÈÈçfactoryName)¶¯Ì¬µØÅжÏÓ¦¸ÃʵÀý»¯Äĸö¹¤³§À࣬ÕâÑù£¬ÎÒÃǾͰÑÒÆÖ²¹¤×÷×ªÒÆµ½Á˶ÔÅäÖÃÎļþµÄÐ޸ġ£Ð޸ĺóµÄÄ£ÐͺʹúÂ룺

³éÏ󹤳§ÀàµÄ´úÂëÈçÏ£º

using System;
2using System.Reflection;
3
4namespace AbstractFactory
5{
6 /// <summary>
7 /// AbstractFactoryÀà
8 /// </summary>
9 public abstract class AbstractFactory
10 {
11 public static AbstractFactory GetInstance()
12 {
13 string factoryName = Constant.STR_FACTORYNAME.ToString();
14
15 AbstractFactory instance;
16
17 if(factoryName == "ChineseFactory")
18 instance = new ChineseFactory();
19 else if(factoryName == "AmericanFactory")
20 instance = new AmericanFactory();
21 else
22 instance = null;
23
24 return instance;
25 }
26
27 public abstract Tax CreateTax();
28
29 public abstract Bonus CreateBonus();
30 }
31}

ÅäÖÃÎļþ£º

<?xml version="1.0" encoding="utf-8" ?>
2<configuration>
3 <appSettings>
4 <add key="factoryName" value="AmericanFactory"></add>
5 </appSettings>
6</configuration>

²ÉÓÃÉÏÃæµÄ½â¾ö·½°¸£¬µ±ÏµÍ³ÔÚÃÀ¹úÆóÒµºÍÖйúÆóÒµÖ®¼äÇл»Ê±£¬ÎÒÃÇÐèÒª×öÊ²Ã´ÒÆÖ²¹¤×÷£¿

´ð°¸ÊÇ: ÎÒÃǽö½öÐèÒªÐÞ¸ÄÅäÖÃÎļþ£¬½«factoryNameµÄÖµ¸ÄΪAmerican¡£

ÐÞ¸ÄÅäÖÃÎļþµÄ¹¤×÷ºÜ¼òµ¥£¬Ö»ÒªÐ´Ò»Æª·ùÅäÖÃÎĵµËµÃ÷ÊéÌṩ¸øÒÆÖ²¸ÃϵͳµÄÍŶÓ(±ÈÈçHippo¹«Ë¾) ¾Í¿ÉÒÔ·½±ãµØÇл»Ê¹¸ÃϵͳÔËÐÐÔÚÃÀ¹ú»òÖйúÆóÒµ¡£

×îºóµÄÐÞÕý£¨²»ÊÇ×îÖÕ·½°¸£©

Ç°ÃæµÄ½â¾ö·½°¸¼¸ºõºÜÍêÃÀ£¬µ«ÊÇ»¹ÓÐÒ»µã覴ã¬è¦´ÃËäС£¬µ«¿ÉÄÜÊÇÖÂÃüµÄ¡£

¿¼ÂÇһϣ¬ÏÖÔÚÈÕ±¾NEC¹«Ë¾¾ö¶¨¹ºÂò¸Ãϵͳ£¬NEC¹«Ë¾µÄ¹¤×ʵÄÔËËã¹æÔò×ñÊØµÄÊÇÈÕ±¾µÄ·¨ÂÉ¡£Èç¹û²ÉÓÃÉÏÃæµÄϵͳ¹¹¼Ü£¬Õâ¸öÒÆÖ²ÎÒÃÇÒª×öÄÄЩ¹¤×÷ÄØ?

1. Ôö¼ÓеÄÒµÎñ¹æÔòÀàJapaneseTax,JapaneseBonus·Ö±ðʵÏÖTaxºÍBonus½Ó¿Ú¡£

2. ÐÞ¸ÄAbstractFactoryµÄgetInstance·½·¨£¬Ôö¼Óelse if(factoryName.equals("Japanese")){....

×¢Òâ: ϵͳÖÐÔö¼ÓÒµÎñ¹æÔòÀ಻ÊÇģʽËùÄܽâ¾öµÄ£¬ÎÞÂÛ²ÉÓÃʲôÉè¼ÆÄ£Ê½£¬JapaneseTax,JapaneseBonus×ÜÊÇÉÙ²»Á˵ġ££¨¼´Ôö¼ÓÁËÐÂϵÁвúÆ·£©

ÎÒÃÇÕæÕý²»ÄܽÓÊܵÄÊÇ£ºÎÒÃÇÈÔÈ»ÐÞÒªÐÞ¸ÄϵͳÖÐÔ­À´µÄÀà(AbstractFactory)¡£Ç°ÃæÌáµ½¹ý¸ÃϵͳµÄÒÆÖ²¹¤×÷£¬ÎÒÃÇ¿ÉÄÜת°ü¸øÒ»¸ö½ÐHippoµÄÈí¼þ¹«Ë¾¡£ ΪÁËά»¤°æÈ¨£¬Î´½«¸ÃϵͳµÄÔ´ÂëÌṩ¸øHippo¹«Ë¾£¬ÄÇôHippo¹«Ë¾¸ù±¾ÎÞ·¨ÐÞ¸ÄAbstractFactory£¬ËùÒÔÏµÍ³ÒÆÖ²ÆäʵÎÞ´Ó̸Æð£¬»òÕßËµÏµÍ³ÒÆÖ²×ÜÒª¿ª·¢ÈËÔ±Ç××Ô²ÎÓë¡£

½â¾ö·½°¸Êǽ«³éÏ󹤳§ÀàÖеÄÌõ¼þÅжÏÓï¾ä£¬ÓÃ.NETÖз¢Éä»úÖÆ´úÌæ£¬ÐÞ¸ÄÈçÏ£º

using System;
2using System.Reflection;
3
4namespace AbstractFactory
5{
6 /// <summary>
7 /// AbstractFactoryÀà
8 /// </summary>
9 public abstract class AbstractFactory
10 {
11 public static AbstractFactory GetInstance()
12 {
13 string factoryName = Constant.STR_FACTORYNAME.ToString();
14
15 AbstractFactory instance;
16
17 if(factoryName != "")
18 instance = (AbstractFactory)Assembly.Load(factoryName).CreateInstance(factoryName);
19 else
20 instance = null;
21
22 return instance;
23 }
24
25 public abstract Tax CreateTax();
26
27 public abstract Bonus CreateBonus();
28 }
29}

ÕâÑù£¬ÔÚÎÒÃDZàдµÄ´úÂëÖоͲ»»á³öÏÖChinese£¬American£¬JapaneseµÈÕâÑùµÄ×ÖÑÛÁË¡£

С½á

×îºóÄÇ·ùͼÊÇ×îÖÕ°æµÄϵͳģÐÍͼ¡£ÎÒÃÇ·¢ÏÖ×÷Ϊ¿Í»§¶Ë½ÇÉ«µÄCalculator½ö½öÒÀÀµ³éÏóÀ࣬ Ëü²»±ØÈ¥Àí½âÖйúºÍÃÀ¹úÆóÒµ¾ßÌåµÄÒµÎñ¹æÔòÈçºÎʵÏÖ£¬CalculatorÃæ¶ÔµÄ½ö½öÊÇÒµÎñ¹æÔò½Ó¿ÚTaxºÍBonus¡£


SoftoϵͳµÄʵ¼Ê¿ª·¢µÄ·Ö¹¤¿ÉÄÜÊÇÒ»¸öÍŶÓרÃÅ×öÒµÎñ¹æÔò£¬ÁíÒ»¸öÍŶÓרÃÅ×öǰ¶ËµÄÒµÎñ¹æÔò×é×°¡£ ³éÏ󹤳§Ä£Ê½ÓÐÖúÓÚÕâÑùµÄÍŶӵķֹ¤: Á½¸öÍŶÓͨѶµÄÔ¼¶¨ÊÇÒµÎñ½Ó¿Ú£¬ÓɳéÏ󹤳§×÷ΪŦ´øÕ³ºÏÒµÎñ¹æÔòºÍǰ¶Îµ÷Ó㬴ó´ó½µµÍÁËÄ£¿é¼äµÄñîºÏÐÔ£¬Ìá¸ßÁËÍŶӿª·¢Ð§ÂÊ¡£

ÍêÍêȫȫµØÀí½â³éÏ󹤳§Ä£Ê½µÄÒâÒå·Ç³£Öش󣬿ÉÒÔ˵¶ÔËüµÄÀí½âÊÇÄã¶ÔOOPÀí½âÉÏÉýµ½Ò»¸öеÄÀï³Ì±®µÄÖØÒª±êÖ¾¡£ ѧ»áÁËÓóéÏ󹤳§Ä£Ê½±àд¿ò¼ÜÀ࣬Ä㽫Àí½âOOPµÄ¾«»ª:ÃæÏò½Ó¿Ú±à³Ì.¡£

Ó¦¶Ô¡°Ð¶ÔÏó¡±

³éÏ󹤳§Ä£Ê½Ö÷ÒªÔÚÓÚÓ¦¶Ô¡°ÐÂϵÁС±µÄÐèÇó±ä»¯¡£ÆäȱµãÔÚÓÚÄÑÓÚÓ¦¸¶¡°Ð¶ÔÏó¡±µÄÐèÇó±ä¶¯¡£Èç¹ûÔÚ¿ª·¢ÖгöÏÖÁËжÔÏ󣬸ÃÈçºÎÈ¥½â¾öÄØ£¿Õâ¸öÎÊÌⲢûÓÐÒ»¸öºÃµÄ´ð°¸£¬ÏÂÃæÎÒÃÇ¿´Ò»ÏÂÀÖÒÀÏʦµÄ»Ø´ð£º

¡°GOF¡¶Éè¼ÆÄ£Ê½¡·ÖÐÌá³ö¹ýÒ»ÖÖ½â¾ö·½·¨£¬¼´¸ø´´½¨¶ÔÏóµÄ²Ù×÷Ôö¼Ó²ÎÊý£¬µ«ÕâÖÖ×ö·¨²¢²»ÄÜÁîÈËÂúÒâ¡£ÊÂʵÉÏ£¬¶ÔÓÚÐÂϵÁмÓжÔÏ󣬾ÍÎÒËùÖª£¬Ä¿Ç°»¹Ã»ÓÐÍêÃÀµÄ×ö·¨£¬Ö»ÓÐһЩÑÝ»¯µÄ˼·£¬ÕâÖֱ仯ʵÔÚÊÇÌ«¾çÁÒÁË£¬ÒòΪϵͳ¶ÔÓÚеĶÔÏóÊÇÍêȫİÉúµÄ¡£¡±

ʵÏÖÒªµã

l.³éÏ󹤳§½«²úÆ·¶ÔÏóµÄ´´½¨ÑÓ³Ùµ½ËüµÄ¾ßÌ幤³§µÄ×ÓÀà¡£

2.Èç¹ûûÓÐÓ¦¶Ô¡°¶àϵÁжÔÏó´´½¨¡±µÄÐèÇó±ä»¯£¬ÔòûÓбØÒªÊ¹ÓóéÏ󹤳§Ä£Ê½£¬ÕâʱºòʹÓüòµ¥µÄ¾²Ì¬¹¤³§ÍêÈ«¿ÉÒÔ¡£

3.ϵÁжÔÏóÖ¸µÄÊÇÕâЩ¶ÔÏóÖ®¼äÓÐÏ໥ÒÀÀµ¡¢»ò×÷ÓõĹØÏµ£¬ÀýÈçÓÎÏ·¿ª·¢³¡¾°Öеġ°µÀ·¡±Óë¡°·¿ÎÝ¡±µÄÒÀÀµ£¬¡°µÀ·¡±Óë¡°µØµÀ¡±µÄÒÀÀµ¡£

4.³éÏ󹤳§Ä£Ê½¾­³£ºÍ¹¤³§·½·¨Ä£Ê½¹²Í¬×éºÏÀ´Ó¦¶Ô¡°¶ÔÏó´´½¨¡±µÄÐèÇó±ä»¯¡£

5.ͨ³£ÔÚÔËÐÐʱ¿Ì´´½¨Ò»¸ö¾ßÌ幤³§ÀàµÄʵÀý£¬ÕâÒ»¾ßÌ幤³§µÄ´´½¨¾ßÓÐÌØ¶¨ÊµÏֵIJúÆ·¶ÔÏó£¬Îª´´½¨²»Í¬µÄ²úÆ·¶ÔÏ󣬿ͻ§Ó¦Ê¹Óò»Í¬µÄ¾ßÌ幤³§¡£

6.°Ñ¹¤³§×÷Ϊµ¥¼þ£¬Ò»¸öÓ¦ÓÃÖÐÒ»°ãÿ¸ö²úƷϵÁÐÖ»ÐèÒ»¸ö¾ßÌ幤³§µÄʵÀý£¬Òò´Ë£¬¹¤³§Í¨³£×îºÃʵÏÖΪһ¸öµ¥¼þģʽ¡£

7.´´½¨²úÆ·£¬³éÏ󹤳§½öÉùÃ÷Ò»¸ö´´½¨²úÆ·µÄ½Ó¿Ú£¬ÕæÕý´´½¨²úÆ·ÊÇÓɾßÌå²úÆ·Àà´´½¨µÄ£¬×îͨ³£µÄÒ»¸ö°ì·¨ÊÇΪÿһ¸ö²úÆ·¶¨ÒåÒ»¸ö¹¤³§·½·¨£¬Ò»¸ö¾ßÌåµÄ¹¤³§½«ÎªÃ¿¸ö²úÆ·ÖØ¶¨Òå¸Ã¹¤³§·½·¨ÒÔÖ¸¶¨²úÆ·£¬ËäÈ»ÕâÑùµÄʵÏֺܼòµ¥£¬µ«ËüÈ·ÒªÇóÿ¸ö²úƷϵÁж¼ÒªÓÐÒ»¸öеľßÌ幤³§×ÓÀ࣬¼´Ê¹ÕâЩ²úƷϵÁеIJî±ðºÜС¡£

Óŵã

1.·ÖÀëÁ˾ßÌåµÄÀà¡£³éÏ󹤳§Ä£Ê½°ïÖúÄã¿ØÖÆÒ»¸öÓ¦Óô´½¨µÄ¶ÔÏóµÄÀ࣬ÒòΪһ¸ö¹¤³§·â×°´´½¨²úÆ·¶ÔÏóµÄÔðÈκ͹ý³Ì¡£Ëü½«¿Í»§ºÍÀàµÄʵÏÖ·ÖÀ룬¿Í»§Í¨¹ýËûÃǵijéÏó½Ó¿Ú²Ù×ÝʵÀý£¬²úÆ·µÄÀàÃûÒ²ÔÚ¾ßÌ幤³§µÄʵÏÖÖб»·ÖÀ룬ËüÃDz»³öÏÖÔÚ¿Í»§´úÂëÖС£

2.ËüʹµÃÒ×ÓÚ½»»»²úƷϵÁС£Ò»¸ö¾ßÌ幤³§ÀàÔÚÒ»¸öÓ¦ÓÃÖнö³öÏÖÒ»´Î¡ª¡ª¼´ÔÚËü³õʼ»¯µÄʱºò¡£ÕâʹµÃ¸Ä±äÒ»¸öÓ¦ÓõľßÌ幤³§±äµÃºÜÈÝÒס£ËüÖ»Ðè¸Ä±ä¾ßÌåµÄ¹¤³§¼´¿ÉʹÓò»Í¬µÄ²úÆ·ÅäÖã¬ÕâÊÇÒòΪһ¸ö³éÏ󹤳§´´½¨ÁËÒ»¸öÍêÕûµÄ²úƷϵÁУ¬ËùÒÔÕû¸ö²úƷϵÁлáÁ¢¿Ì¸Ä±ä¡£

3.ËüÓÐÀûÓÚ²úÆ·µÄÒ»ÖÂÐÔ¡£µ±Ò»¸öϵÁеIJúÆ·¶ÔÏó±»Éè¼Æ³ÉÒ»Æð¹¤×÷ʱ£¬Ò»¸öÓ¦ÓÃÒ»´ÎÖ»ÄÜʹÓÃͬһ¸öϵÁÐÖеĶÔÏó£¬ÕâÒ»µãºÜÖØÒª£¬¶ø³éÏ󹤳§ºÜÈÝÒ×ʵÏÖÕâÒ»µã¡£

ȱµã

lÄÑÒÔÖ§³ÖÐÂÖÖÀàµÄ²úÆ·¡£ÄÑÒÔÀ©Õ¹³éÏ󹤳§ÒÔÉú²úÐÂÖÖÀàµÄ²úÆ·¡£ÕâÊÇÒòΪ³éÏ󹤳§¼¸¿ÚÈ·¶¨ÁË¿ÉÒÔ±»´´½¨µÄ²úÆ·¼¯ºÏ£¬Ö§³ÖÐÂÖÖÀàµÄ²úÆ·¾ÍÐèÒªÀ©Õ¹¸Ã¹¤³§½Ó¿Ú£¬Õâ½«Éæ¼°³éÏ󹤳§À༰ÆäËùÓÐ×ÓÀàµÄ¸Ä±ä¡£

ÊÊÓÃÐÔ

ÔÚÒÔÏÂÇé¿öÏÂÓ¦µ±¿¼ÂÇʹÓóéÏ󹤳§Ä£Ê½£º

1.Ò»¸öϵͳ²»Ó¦µ±ÒÀÀµÓÚ²úÆ·ÀàʵÀýÈçºÎ±»´´½¨¡¢×éºÏºÍ±í´ïµÄϸ½Ú£¬Õâ¶ÔÓÚËùÓÐÐÎ̬µÄ¹¤³§Ä£Ê½¶¼ÊÇÖØÒªµÄ¡£

2.Õâ¸öϵͳÓжàÓÚÒ»¸öµÄ²úÆ·×壬¶øÏµÍ³Ö»Ïû·ÑÆäÖÐijһ²úÆ·×å¡£

3.ͬÊôÓÚͬһ¸ö²úÆ·×åµÄ²úÆ·ÊÇÔÚÒ»ÆðʹÓõģ¬ÕâÒ»Ô¼Êø±ØÐëÔÚϵͳµÄÉè¼ÆÖÐÌåÏÖ³öÀ´¡£

4.ϵͳÌṩһ¸ö²úÆ·ÀàµÄ¿â£¬ËùÓеIJúÆ·ÒÔͬÑùµÄ½Ó¿Ú³öÏÖ£¬´Ó¶øÊ¹¿Í»§¶Ë²»ÒÀÀµÓÚʵÏÖ¡£

Ó¦Óó¡¾°

1.Ö§³Ö¶àÖֹ۸бê×¼µÄÓû§½çÃæ¹¤¾ßÏ䣨Kit£©¡£

2.ÓÎÏ·¿ª·¢ÖеĶà·ç¸ñϵÁг¡¾°£¬±ÈÈçµÀ·£¬·¿ÎÝ£¬¹ÜµÀµÈ¡£

3.¡­¡­

×ܽá

×ÜÖ®£¬³éÏ󹤳§Ä£Ê½ÌṩÁËÒ»¸ö´´½¨Ò»ÏµÁÐÏà¹Ø»òÏ໥ÒÀÀµ¶ÔÏóµÄ½Ó¿Ú£¬ÔËÓóéÏ󹤳§Ä£Ê½µÄ¹Ø¼üµãÔÚÓÚÓ¦¶Ô¡°¶àϵÁжÔÏó´´½¨¡±µÄÐèÇó±ä»¯¡£Ò»¾ä»°£¬Ñ§»áÁ˳éÏ󹤳§Ä£Ê½£¬Ä㽫Àí½âOOPµÄ¾«»ª£ºÃæÏò½Ó¿Ú±à³Ì¡£

   
2847 ´Îä¯ÀÀ       27
Ïà¹ØÎÄÕÂ

ΪʲôҪ×ö³ÖÐø²¿Êð£¿
ÆÊÎö¡°³ÖÐø½»¸¶¡±£ºÎå¸öºËÐÄʵ¼ù
¼¯³ÉÓë¹¹½¨Ö¸ÄÏ
³ÖÐø¼¯³É¹¤¾ßµÄÑ¡Ôñ-×°ÔØ
 
Ïà¹ØÎĵµ

³ÖÐø¼¯³É½éÉÜ
ʹÓÃHudson³ÖÐø¼¯³É
³ÖÐø¼¯³ÉÖ®-ÒÀÀµ¹ÜÀí
IPD¼¯³É²úÆ·¿ª·¢¹ÜÀí
Ïà¹Ø¿Î³Ì

ÅäÖùÜÀí¡¢ÈÕ¹¹½¨Óë³ÖÐø¼¯³É
Èí¼þ¼Ü¹¹Éè¼Æ·½·¨¡¢°¸ÀýÓëʵ¼ù
µ¥Ôª²âÊÔ¡¢Öع¹¼°³ÖÐø¼¯³É
»ùÓÚAndroidµÄµ¥Ôª¡¢ÐÔÄܲâÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ÖØ¹¹-ʹ´úÂë¸ü¼ò½àÓÅÃÀ
Visitor Parttern
ÓÉ±í¼°À￴ģʽ
Éè¼ÆÄ£Ê½Ëæ±ÊϵÁÐ
ÉîÈëdz³öÉè¼ÆÄ£Ê½-½éÉÜ
.NETÖеÄÉè¼ÆÄ£Ê½

Ïà¹ØÅàѵ¿Î³Ì

J2EEÉè¼ÆÄ£Ê½ºÍÐÔÄܵ÷ÓÅ
Ó¦ÓÃģʽÉè¼ÆJavaÆóÒµ¼¶Ó¦ÓÃ
Éè¼ÆÄ£Ê½Ô­ÀíÓëÓ¦ÓÃ
J2EEÉè¼ÆÄ£Ê½Ö¸ÄÏ
µ¥Ôª²âÊÔ+ÖØ¹¹+Éè¼ÆÄ£Ê½
Éè¼ÆÄ£Ê½¼°ÆäCSharpʵÏÖ


ijµçÁ¦¹«Ë¾ Éè¼ÆÄ£Ê½Ô­Àí
À¶ÍØÆË Éè¼ÆÄ£Ê½Ô­Àí¼°Ó¦ÓÃ
ÎÀÐǵ¼º½ UML & OOAD
ÌÀɭ·͸Ñз¢ÖÐÐÄ UML& OOAD
Öдïµçͨ Éè¼ÆÄ£Ê½Ô­Àí
Î÷ÃÅ×Ó Ç¶ÈëʽÉè¼ÆÄ£Ê½
 
 
 
¡¡