¸ÅÊö
ÔÚÈí¼þϵͳÖУ¬¾³£ÃæÁÙ×Å¡°Ò»ÏµÁÐÏ໥ÒÀÀµµÄ¶ÔÏ󡱵Ĵ´½¨¹¤×÷£»Í¬Ê±ÓÉÓÚÐèÇóµÄ±ä»¯£¬ÍùÍù´æÔÚןü¶àϵÁжÔÏóµÄ´´½¨¹¤×÷¡£ÈçºÎÓ¦¶ÔÕâÖֱ仯£¿ÈçºÎÈÆ¹ý³£¹æµÄ¶ÔÏóµÄ´´½¨·½·¨£¨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} |
ÔËÐгÌÐò£¬ÊäÈëµÄ½á¹ûÈçÏ£º
Õë¶ÔÃÀ¹úÆóҵΪϵͳ½¨Ä£
ΪÁËÍØÕ¹¹ú¼ÊÊг¡£¬ÎÒÃÇÒª°Ñ¸ÃÏµÍ³ÒÆÖ²¸øÃÀ¹ú¹«Ë¾Ê¹Óá£
ÃÀ¹úÆóÒµµÄ¹¤×ʼÆËãͬÑùÊÇ: Ô±¹¤µÄ¹¤×Ê = »ù±¾¹¤×Ê + ½±½ð - ¸öÈËËùµÃ˰¡£
µ«ÊÇËûÃǵĽ±½ðºÍ¸öÈËËùµÃ˰µÄ¼ÆËã¹æÔò²»Í¬ÓÚÖйúÆóÒµ:
ÃÀ¹úÆóÒµ½±½ðºÍ¸öÈËËùµÃ˰µÄ¼ÆËã¹æÔòÊÇ:
½±½ð = »ù±¾¹¤×Ê * 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} |
ÔËÐгÌÐò£¬ÊäÈëµÄ½á¹ûÈçÏ£º
ÕûºÏ³ÉͨÓÃϵͳ
ÈÃÎÒÃǻعËһϸÃϵͳµÄ·¢Õ¹Àú³Ì£º
×î³õ£¬ÎÒÃÇÖ»¿¼Âǽ«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µÄ¾«»ª£ºÃæÏò½Ó¿Ú±à³Ì¡£
|