¸ÅÊö
ÔÚÈí¼þϵͳÖУ¬ÓÐʱºòÃæÁÙ×Å¡°Ò»¸ö¸´ÔÓ¶ÔÏ󡱵Ĵ´½¨¹¤×÷£¬Æäͨ³£Óɸ÷¸ö²¿·ÖµÄ×Ó¶ÔÏóÓÃÒ»¶¨µÄËã·¨¹¹³É£»ÓÉÓÚÐèÇóµÄ±ä»¯£¬Õâ¸ö¸´ÔÓ¶ÔÏóµÄ¸÷¸ö²¿·Ö¾³£ÃæÁÙמçÁҵı仯£¬µ«Êǽ«ËüÃÇ×éºÏÔÚÒ»ÆðµÄË㷨ȷÏà¶ÔÎȶ¨¡£ÈçºÎÓ¦¶ÔÕâÖֱ仯£¿ÈçºÎÌṩһÖÖ¡°·â×°»úÖÆ¡±À´¸ôÀë³ö¡°¸´ÔÓ¶ÔÏóµÄ¸÷¸ö²¿·Ö¡±µÄ±ä»¯£¬´Ó¶ø±£³ÖϵͳÖеġ°Îȶ¨¹¹½¨Ëã·¨¡±²»Ëæ×ÅÐèÇó¸Ä±ä¶ø¸Ä±ä£¿Õâ¾ÍÊÇҪ˵µÄ½¨ÔìÕßģʽ¡£
±¾ÎÄͨ¹ýÏÖʵÉú»îÖеÄÂòKFCµÄÀý×Ó£¬ÓÃͼ½âµÄ·½Ê½À´Ú¹Êͽ¨ÔìÕßģʽ¡£
Òâͼ
½«Ò»¸ö¸´ÔӵĹ¹½¨ÓëÆä±íʾÏà·ÖÀ룬ʹµÃͬÑùµÄ¹¹½¨¹ý³Ì¿ÉÒÔ´´½¨²»Í¬µÄ±íʾ¡£
Ä£ÐÍͼ

Éú»îÖеÄÀý×Ó
Éú³ÉÆ÷ģʽ½«¸´ÔÓ¶ÔÏóµÄ¹¹½¨Óë¶ÔÏóµÄ±íÏÖ·ÖÀ뿪À´£¬ÕâÑùʹµÃͬÑùµÄ¹¹½¨¹ý³Ì¿ÉÒÔ´´½¨³ö²»Í¬µÄ±íÏÖ¡£ÕâÖÖģʽÓÃÓÚ¿ì²ÍµêÖÆ×÷¶ùͯ²Í¡£µäÐ͵Ķùͯ²Í°üÀ¨Ò»¸öÖ÷ʳ£¬Ò»¸ö¸¨Ê³£¬Ò»±ÒûÁϺÍÒ»¸öÍæ¾ß£¨ÀýÈ纺±¤¡¢Õ¨¼¦¡¢¿ÉÀÖºÍÍæ¾ß³µ£©¡£ÕâЩÔÚ²»Í¬µÄ¶ùͯ²ÍÖпÉÒÔÊDz»Í¬µÄ£¬µ«ÊÇ×éºÏ³É¶ùͯ²ÍµÄ¹ý³ÌÊÇÏàͬµÄ¡£ÎÞÂ۹˿͵ãµÄÊǺº±¤£¬ÈýÃûÖλ¹ÊǼ¦È⣬¹ý³Ì¶¼ÊÇÒ»ÑùµÄ¡£¹ñ̨µÄÔ±¹¤Ö±½Ó°ÑÖ÷ʳ£¬¸¨Ê³ºÍÍæ¾ß·ÅÔÚÒ»Æð¡£ÕâЩÊÇ·ÅÔÚÒ»¸ö´ü×ÓÖеġ£ÒûÁϱ»µ¹Èë±ÖУ¬·ÅÔÚ´ü×ÓÍâ±ß¡£ÕâЩ¹ý³ÌÔÚÏ໥¾ºÕùµÄ²Í¹ÝÖÐÊÇͬÑùµÄ¡£

ʵÏÖ¹ý³Ìͼ½â
ÔÚÕâÀïÎÒÃÇ»¹ÊÇÒÔÈ¥KFCµêÂòÌײÍΪÀý×Ó£¬Ê¾ÒâͼÈçÏ£º

¿Í»§¶Ë£º¹Ë¿Í¡£ÏëÈ¥ÂòÒ»Ì×Ìײͣ¨ÕâÀïÃæ°üÀ¨ºº±¤£¬¿ÉÀÖ£¬ÊíÌõ£©£¬¿ÉÒÔÓÐ1ºÅºÍ2ºÅÁ½ÖÖÌײ͹©¹Ë¿ÍÑ¡Ôñ¡£
Ö¸µ¼Õß½ÇÉ«£ºÊÕÒøÔ±¡£ÖªµÀ¹Ë¿ÍÏëÒªÂòʲôÑùµÄÌײͣ¬²¢¸æË߲͹ÝÔ±¹¤È¥×¼±¸Ìײ͡£
½¨ÔìÕß½ÇÉ«£º²Í¹ÝÔ±¹¤¡£°´ÕÕÊÕÒøÔ±µÄÒªÇóÈ¥×¼±¸¾ßÌåµÄÌײͣ¬·Ö±ð·ÅÈ뺺±¤£¬¿ÉÀÖ£¬ÊíÌõµÈ¡£
²úÆ·½ÇÉ«£º×îºóµÄÌײͣ¬ËùÓеĶ«Î÷·ÅÔÚͬһ¸öÅÌ×ÓÀïÃæ¡£
ÏÂÃæ¿ªÊ¼ÎÒÃǵÄÂòÌײ͹ý³Ì¡£
1£®¿Í»§´´½¨Derector¶ÔÏ󣬲¢ÓÃËüËùÏëÒªµÄBuilder¶ÔÏó½øÐÐÅäÖ᣹˿ͽøÈëKFCµêÒªÂòÌײͣ¬ÏÈÕÒµ½Ò»¸öÊÕÒøÔ±£¬Ï൱ÓÚ´´½¨ÁËÒ»¸öÖ¸µ¼Õß¶ÔÏó¡£ÕâλÊÕÒøÔ±¸ø³öÁ½ÖÖÌײ͹©¹Ë¿ÍÑ¡Ôñ£º1ÆÕͨÌײͣ¬2»Æ½ðÌײ͡£Íê³ÉµÄ¹¤×÷ÈçʱÐòͼÖкìÉ«²¿·ÖËùʾ¡£

³ÌÐòʵÏÖ£º
using System; 2using System.Configuration; 3using System.Reflection; 4 5namespace KFC 6{ 7 /// <summary> 8 /// Client Àà 9 /// </summary> 10 public class Client 11 { 12 public static void Main(string[] args) 13 { 14 FoodManager foodmanager = new FoodManager(); 15 16 Builder instance; 17 18 Console.WriteLine("Please Enter Food No:"); 19 20 string No = Console.ReadLine(); 21 22 string foodType = ConfigurationSettings.AppSettings["No"+No]; 23 24 instance = (Builder)Assembly.Load("KFC").CreateInstance("KFC." + foodType); 25 26 foodmanager.Construct(instance); 27 } 28 } 29} |
²úÆ·£¨Ìײͣ©Àࣺ
using System; 2using System.Collections; 3 4namespace KFC 5{ 6 /// <summary> 7 /// FoodÀ࣬¼´²úÆ·Àà 8 /// </summary> 9 public class Food 10 { 11 Hashtable food = new Hashtable(); 12 13 /// <summary> 14 /// Ìí¼ÓʳƷ 15 /// </summary> 16 /// <param name="strName">ʳƷÃû³Æ</param> 17 /// <param name="Price">¼Û¸ñ</param> 18 public void Add(string strName,string Price) 19 { 20 food.Add(strName,Price); 21 } 22 23 /// <summary> 24 /// ÏÔʾʳƷÇåµ¥ 25 /// </summary> 26 public void Show() 27 { 28 IDictionaryEnumerator myEnumerator = food.GetEnumerator(); 29 Console.WriteLine("Food List:"); 30 Console.WriteLine("------------------------------"); 31 string strfoodlist = ""; 32 while(myEnumerator.MoveNext()) 33 { 34 strfoodlist = strfoodlist + "\n\n" + myEnumerator.Key.ToString(); 35 strfoodlist = strfoodlist + ":\t" +myEnumerator.Value.ToString(); 36 } 37 Console.WriteLine(strfoodlist); 38 Console.WriteLine("\n------------------------------"); 39 } 40 } 41} |
2£®Ö¸µ¼Õß֪ͨ½¨ÔìÆ÷¡£ÊÕÒøÔ±£¨Ö¸µ¼Õߣ©¸æÖª²Í¹ÝÔ±¹¤×¼±¸Ìײ͡£ÕâÀïÎÒÃÇ×¼±¸Ìײ͵Ä˳ÐòÊÇ£º·ÅÈ뺺±¤£¬¿ÉÀÖµ¹Èë±ÖУ¬ÊíÌõ·ÅÈëºÐÖУ¬²¢°ÑÕâЩ¶«Î÷¶¼·ÅÔÚÅÌ×ÓÉÏ¡£Õâ¸ö¹ý³Ì¶ÔÓÚÆÕͨÌײͺͻƽðÌײÍÀ´Ëµ¶¼ÊÇÒ»ÑùµÄ£¬²»Í¬µÄÊÇËüÃǵĺº±¤£¬¿ÉÀÖ£¬ÊíÌõ¼Û¸ñ²»Í¬¶øÒÑ¡£ÈçʱÐòͼºìÉ«²¿·ÖËùʾ£º

³ÌÐòʵÏÖ£º
using System; 2 3namespace KFC 4{ 5 /// <summary> 6 /// FoodManagerÀ࣬¼´Ö¸µ¼Õß 7 /// </summary> 8 public class FoodManager 9 { 10 public void Construct(Builder builder) 11 { 12 builder.BuildHamb(); 13 14 builder.BuildCoke(); 15 16 builder.BuildChip(); 17 } 18 } 19} |
3£®½¨ÔìÕß´¦ÀíÖ¸µ¼ÕßµÄÒªÇ󣬲¢½«²¿¼þÌí¼Óµ½²úÆ·ÖС£²Í¹ÝÔ±¹¤£¨½¨ÔìÕߣ©°´ÕÕÊÕÒøÔ±ÒªÇóµÄ°Ñ¶ÔÓ¦µÄºº±¤£¬¿ÉÀÖ£¬ÊíÌõ·ÅÈëÅÌ×ÓÖС£Õⲿ·ÖÊǽ¨ÔìÕßģʽÀïÃæ¸»Óڱ仯µÄ²¿·Ö£¬ÒòΪ¹Ë¿ÍÑ¡ÔñµÄÌײͲ»Í¬£¬Ìײ͵Ä×é×°¹ý³ÌÒ²²»Í¬£¬Õâ²½Íê³É²úÆ·¶ÔÏóµÄ´´½¨¹¤×÷¡£
³ÌÐòʵÏÖ£º
using System; 2 3namespace KFC 4{ 5 /// <summary> 6 /// BuilderÀ࣬¼´³éÏó½¨ÔìÕßÀ࣬¹¹ÔìÌ×²Í 7 /// </summary> 8 public abstract class Builder 9 { 10 /// <summary> 11 /// Ìí¼Óºº±¤ 12 /// </summary> 13 public abstract void BuildHamb(); 14 15 /// <summary> 16 /// Ìí¼Ó¿ÉÀÖ 17 /// </summary> 18 public abstract void BuildCoke(); 19 20 /// <summary> 21 /// Ìí¼ÓÊíÌõ 22 /// </summary> 23 public abstract void BuildChip(); 24 25 /// <summary> 26 /// ·µ»Ø½á¹û 27 /// </summary> 28 /// <returns>ʳƷ¶ÔÏó</returns> 29 public abstract Food GetFood(); 30 } 31} |
using System; 2 3namespace KFC 4{ 5 /// <summary> 6 /// NormalBuilderÀ࣬¾ßÌå¹¹ÔìÕߣ¬ÆÕͨÌ×²Í 7 /// </summary> 8 public class NormalBuilder:Builder 9 { 10 private Food NormalFood = new Food(); 11 12 public override void BuildHamb() 13 { 14 NormalFood.Add("NormalHamb","£¤10.50"); 15 } 16 17 public override void BuildCoke() 18 { 19 NormalFood.Add("CokeCole","£¤4.50"); 20 } 21 22 public override void BuildChip() 23 { 24 NormalFood.Add("FireChips","£¤2.00"); 25 } 26 27 public override Food GetFood() 28 { 29 return NormalFood; 30 } 31 32 } 33} |
using System; 2 3namespace KFC 4{ 5 /// <summary> 6 /// GoldBuilderÀ࣬¾ßÌå¹¹ÔìÕߣ¬»Æ½ðÌ×²Í 7 /// </summary> 8 public class GoldBuilder:Builder 9 { 10 private Food GoldFood = new Food(); 11 12 public override void BuildHamb() 13 { 14 GoldFood.Add("GoldHamb","£¤13.50"); 15 } 16 17 public override void BuildCoke() 18 { 19 GoldFood.Add("CokeCole","£¤4.50"); 20 } 21 22 public override void BuildChip() 23 { 24 GoldFood.Add("FireChips","£¤3.50"); 25 } 26 27 public override Food GetFood() 28 { 29 return GoldFood; 30 } 31 32 } 33}
|
4£®¿Í»§´Ó½¨ÔìÕß¼ìË÷²úÆ·¡£´Ó²Í¹ÝÔ±¹¤×¼±¸ºÃÌײͺ󣬹˿ÍÔٴӲ͹ÝÔ±¹¤ÄǶùÄûØÌײ͡£Õâ²½¿Í»§³ÌÐòÒª×öµÄ½ö½öÊÇÈ¡»ØÒѾÉú³ÉµÄ²úÆ·¶ÔÏó£¬ÈçʱÐòͼÖкìÉ«²¿·ÖËùʾ¡£

ÍêÕûµÄ¿Í»§³ÌÐò£º
using System; 2using System.Configuration; 3using System.Reflection; 4 5namespace KFC 6{ 7 /// <summary> 8 /// Client Àà 9 /// </summary> 10 public class Client 11 { 12 public static void Main(string[] args) 13 { 14 FoodManager foodmanager = new FoodManager(); 15 16 Builder instance; 17 18 Console.WriteLine("Please Enter Food No:"); 19 20 string No = Console.ReadLine(); 21 22 string foodType = ConfigurationSettings.AppSettings["No"+No]; 23 24 instance = (Builder)Assembly.Load("KFC").CreateInstance("KFC." + foodType); 25 26 foodmanager.Construct(instance); 27 28 Food food = instance.GetFood(); 29 food.Show(); 30 31 Console.ReadLine(); 32 } 33 } 34} |
ͨ¹ý·ÖÎö²»ÄÑ¿´³ö£¬ÔÚÕâ¸öÀý×ÓÖУ¬ÔÚ×¼±¸Ìײ͵Ĺý³ÌÊÇÎȶ¨µÄ£¬¼´°´ÕÕÒ»¶¨µÄ²½ÖèÈ¥×ö£¬¶øÌײ͵Ä×é³É²¿·ÖÔòÊDZ仯µÄ£¬ÓпÉÄÜÊÇÆÕͨÌײͻò»Æ½ðÌײ͵ȡ£Õâ¸ö±ä»¯¾ÍÊǽ¨ÔìÕßģʽÖеġ°±ä»¯µã¡°£¬¾ÍÊÇÎÒÃÇÒª·â×°µÄ²¿·Ö¡£
ÁíÍâÒ»¸öÀý×Ó
ÔÚÕâÀïÎÒÃÇÔÙ¸ø³öÁíÍâÒ»¸ö¹ØÓÚ½¨Ôì·¿×ÓµÄÀý×Ó¡£¿Í»§³ÌÐòͨ¹ýµ÷ÓÃÖ¸µ¼Õß (CDirector class)µÄBuildHouse()·½·¨À´´´½¨Ò»¸ö·¿×Ó¡£¸Ã·½·¨ÓÐÒ»¸ö²¼¶ûÐ͵IJÎÊýblnBackyard£¬µ±blnBackyardΪ¼Ùʱָµ¼Õß½«´´½¨Ò»¸öApartment£¨Concrete
Builder£©£¬µ±ËüÎªÕæÊ±½«´´½¨Ò»¸öSingle Family Home£¨Concrete Builder£©¡£ÕâÁ½ÖÖ·¿×Ó¶¼ÊµÏÖÁ˽ӿÚIhouse¡£
³ÌÐòʵÏÖ£º
//¹ØÓÚ½¨Ôì·¿ÎݵÄÀý×Ó 2using System; 3using System.Collections; 4 5/// <summary> 6/// ³éÏó½¨ÔìÕß 7/// </summary> 8public interface IHouse 9{ 10 bool GetBackyard(); 11 long NoOfRooms(); 12 string Description(); 13} 14 15/// <summary> 16/// ¾ßÌ彨ÔìÕß 17/// </summary> 18public class CApt:IHouse 19{ 20 private bool mblnBackyard; 21 private Hashtable Rooms; 22 public CApt() 23 { 24 CRoom room; 25 Rooms = new Hashtable(); 26 room = new CRoom(); 27 room.RoomName = "Master Bedroom"; 28 Rooms.Add ("room1",room); 29 30 room = new CRoom(); 31 room.RoomName = "Second Bedroom"; 32 Rooms.Add ("room2",room); 33 34 room = new CRoom(); 35 room.RoomName = "Living Room"; 36 Rooms.Add ("room3",room); 37 38 mblnBackyard = false; 39 } 40 41 public bool GetBackyard() 42 { 43 return mblnBackyard; 44 } 45 public long NoOfRooms() 46 { 47 return Rooms.Count; 48 } 49 public string Description() 50 { 51 IDictionaryEnumerator myEnumerator = Rooms.GetEnumerator(); 52 string strDescription; 53 strDescription = "This is an Apartment with " + Rooms.Count + " Rooms \n"; 54 strDescription = strDescription + "This Apartment doesn't have a backyard \n"; 55 while (myEnumerator.MoveNext()) 56 { 57 strDescription = strDescription + "\n" + myEnumerator.Key + "\t" + ((CRoom)myEnumerator.Value).RoomName; 58 } 59 return strDescription; 60 } 61} 62 63/// <summary> 64/// ¾ßÌ彨ÔìÕß 65/// </summary> 66public class CSFH:IHouse 67{ 68 private bool mblnBackyard; 69 private Hashtable Rooms; 70 public CSFH() 71 { 72 CRoom room; 73 Rooms = new Hashtable(); 74 75 room = new CRoom(); 76 room.RoomName = "Master Bedroom"; 77 Rooms.Add ("room1",room); 78 79 room = new CRoom(); 80 room.RoomName = "Second Bedroom"; 81 Rooms.Add ("room2",room); 82 83 room = new CRoom(); 84 room.RoomName = "Third Room"; 85 Rooms.Add ("room3",room); 86 87 room = new CRoom(); 88 room.RoomName = "Living Room"; 89 Rooms.Add ("room4",room); 90 91 room = new CRoom(); 92 room.RoomName = "Guest Room"; 93 Rooms.Add ("room5",room); 94 95 mblnBackyard = true; 96 97 } 98 99 public bool GetBackyard() 100 { 101 return mblnBackyard; 102 } 103 public long NoOfRooms() 104 { 105 return Rooms.Count; 106 } 107 public string Description() 108 { 109 IDictionaryEnumerator myEnumerator = Rooms.GetEnumerator(); 110 string strDescription; 111 strDescription = "This is an Single Family Home with " + Rooms.Count + " Rooms \n"; 112 strDescription = strDescription + "This house has a backyard \n"; 113 while (myEnumerator.MoveNext()) 114 { 115 strDescription = strDescription + "\n" + myEnumerator.Key + "\t" + ((CRoom)myEnumerator.Value).RoomName; 116 } 117 return strDescription; 118 } 119} 120 121public interface IRoom 122{ 123 string RoomName{get;set;} 124} 125 126public class CRoom:IRoom 127{ 128 private string mstrRoomName; 129 public string RoomName 130 { 131 get 132 { 133 return mstrRoomName; 134 } 135 set 136 { 137 mstrRoomName = value; 138 } 139 } 140} 141 142/// <summary> 143/// Ö¸µ¼Õß 144/// </summary> 145public class CDirector 146{ 147 public IHouse BuildHouse(bool blnBackyard) 148 { 149 if (blnBackyard) 150 { 151 return new CSFH(); 152 } 153 else 154 { 155 return new CApt(); 156 } 157 } 158} 159 160/// <summary> 161/// ¿Í»§³ÌÐò 162/// </summary> 163public class Client 164{ 165 static void Main(string[] args) 166 { 167 CDirector objDirector = new CDirector(); 168 IHouse objHouse; 169 170 string Input = Console.ReadLine(); 171 objHouse = objDirector.BuildHouse(bool.Parse(Input)); 172 173 Console.WriteLine(objHouse.Description()); 174 Console.ReadLine(); 175 } 176} |
½¨ÔìÕßģʽµÄ¼¸ÖÖÑÝ»¯
Ê¡ÂÔ³éÏó½¨ÔìÕß½ÇÉ«
ϵͳÖÐÖ»ÐèÒªÒ»¸ö¾ßÌ彨ÔìÕߣ¬Ê¡ÂÔµô³éÏó½¨ÔìÕߣ¬½á¹¹Í¼ÈçÏ£º

Ö¸µ¼Õß´úÂëÈçÏ£º
class Director 2 { 3 private ConcreteBuilder builder; 4 5 public void Construct() 6 { 7 builder.BuildPartA(); 8 builder.BuildPartB(); 9 } 10 } |
Ê¡ÂÔÖ¸µ¼Õß½ÇÉ«
³éÏó½¨ÔìÕß½ÇÉ«ÒѾ±»Ê¡ÂÔµô£¬»¹¿ÉÒÔÊ¡ÂÔµôÖ¸µ¼Õß½ÇÉ«¡£ÈÃBuilder½ÇÉ«×Ô¼º°çÑÝÖ¸µ¼ÕßÓ뽨ÔìÕßË«ÖØ½ÇÉ«¡£½á¹¹Í¼ÈçÏ£º

½¨ÔìÕß½ÇÉ«´úÂëÈçÏ£º
public class Builder 2 { 3 private Product product = new Product(); 4 5 public void BuildPartA() 6 { 7 // 8 } 9 10 public void BuildPartB() 11 { 12 // 13 } 14 15 public Product GetResult() 16 { 17 return product; 18 } 19 20 public void Construct() 21 { 22 BuildPartA(); 23 BuildPartB(); 24 } 25 } |
¿Í»§³ÌÐò£º
public class Client 2 { 3 private static Builder builder; 4 5 public static void Main() 6 { 7 builder = new Builder(); 8 builder.Construct(); 9 Product product = builder.GetResult(); 10 } 11 } |
ºÏ²¢½¨ÔìÕß½ÇÉ«ºÍ²úÆ·½ÇÉ«
½¨Ôìģʽʧȥ³éÏó½¨ÔìÕß½ÇÉ«ºÍÖ¸µ¼Õß½ÇÉ«ºó£¬¿ÉÒÔ½øÒ»²½ÍË»¯£¬´Ó¶øÊ§È¥¾ßÌ彨ÔìÕß½ÇÉ«£¬´Ëʱ¾ßÌ彨ÔìÕß½ÇÉ«ºÍ²úÆ·½ÇÉ«ºÏ²¢£¬´Ó¶øÊ¹µÃ²úÆ·×Ô¼º¾ÍÊÇ×Ô¼ºµÄ½¨ÔìÕß¡£ÕâÑù×ö»ìÏýÁ˶ÔÏóµÄ½¨ÔìÕߺͶÔÏó±¾Éí£¬µ«ÊÇÓÐʱºòÒ»¸ö²úÆ·¶ÔÏóÓÐ׏̶¨µÄ¼¸¸öÁã¼þ£¬¶øÇÒÓÀÔ¶Ö»ÓÐÕ⼸¸öÁã¼þ£¬´Ëʱ½«²úÆ·ÀàºÍ½¨ÔìÀàºÏ²¢£¬¿ÉÒÔʹϵͳ¼òµ¥Ò×¶Á¡£½á¹¹Í¼ÈçÏ£º

ʵÏÖÒªµã
1¡¢½¨ÔìÕßģʽÖ÷ÒªÓÃÓÚ¡°·Ö²½Öè¹¹½¨Ò»¸ö¸´ÔӵĶÔÏó¡±£¬ÔÚÕâÆäÖС°·Ö²½Ö衱ÊÇÒ»¸öÎȶ¨µÄËã·¨£¬¶ø¸´ÔÓ¶ÔÏóµÄ¸÷¸ö²¿·ÖÔò¾³£±ä»¯¡£
2¡¢²úÆ·²»ÐèÒª³éÏóÀà£¬ÌØ±ðÊÇÓÉÓÚ´´½¨¶ÔÏóµÄËã·¨¸´ÔÓ¶øµ¼ÖÂʹÓôËģʽµÄÇé¿öÏ»òÕß´ËģʽӦÓÃÓÚ²úÆ·µÄÉú³É¹ý³Ì£¬Æä×îÖÕ½á¹û¿ÉÄܲîÒìºÜ´ó£¬²»´ó¿ÉÄÜÌáÁ¶³öÒ»¸ö³éÏó²úÆ·Àà¡£
3¡¢´´½¨ÕßÖеĴ´½¨×Ó²¿¼þµÄ½Ó¿Ú·½·¨²»ÊdzéÏó·½·¨¶øÊǿշ½·¨£¬²»½øÐÐÈκβÙ×÷£¬¾ßÌåµÄ´´½¨ÕßÖ»ÐèÒª¸²¸ÇÐèÒªµÄ·½·¨¾Í¿ÉÒÔ£¬µ«ÊÇÕâÒ²²»ÊǾø¶ÔµÄ£¬ÌرðÊÇÀàËÆÎı¾×ª»»ÕâÖÖÇé¿öÏ£¬È±Ê¡µÄ·½·¨½«ÊäÈëÔ·â²»¶¯µÄÊä³öÊǺÏÀíµÄȱʡ²Ù×÷¡£
4¡¢Ç°ÃæÎÒÃÇ˵¹ýµÄ³éÏ󹤳§Ä£Ê½£¨Abtract Factory£©½â¾ö¡°ÏµÁжÔÏó¡±µÄÐèÇó±ä»¯£¬Builderģʽ½â¾ö¡°¶ÔÏ󲿷֡±µÄÐèÇó±ä»¯£¬½¨ÔìÕßģʽ³£ºÍ×éºÏģʽ£¨Composite
Pattern£©½áºÏʹÓá£
Ч¹û
1¡¢½¨ÔìÕßģʽµÄʹÓÃʹµÃ²úÆ·µÄÄÚ²¿±íÏó¿ÉÒÔ¶ÀÁ¢µÄ±ä»¯¡£Ê¹Óý¨ÔìÕßģʽ¿ÉÒÔʹ¿Í»§¶Ë²»±ØÖªµÀ²úÆ·ÄÚ²¿×é³ÉµÄϸ½Ú¡£
2¡¢Ã¿Ò»¸öBuilder¶¼Ïà¶Ô¶ÀÁ¢£¬¶øÓëÆäËüµÄBuilderÎ޹ء£
3¡¢¿Éʹ¶Ô¹¹Ôì¹ý³Ì¸ü¼Ó¾«Ï¸¿ØÖÆ¡£
4¡¢½«¹¹½¨´úÂëºÍ±íʾ´úÂë·Ö¿ª¡£
5¡¢½¨ÔìÕßģʽµÄȱµãÔÚÓÚÄÑÓÚÓ¦¸¶¡°·Ö²½Öè¹¹½¨Ëã·¨¡±µÄÐèÇó±ä¶¯¡£
ÊÊÓÃÐÔ
ÒÔÏÂÇé¿öÓ¦µ±Ê¹Óý¨ÔìÕßģʽ£º
1¡¢ÐèÒªÉú³ÉµÄ²úÆ·¶ÔÏóÓи´ÔÓµÄÄÚ²¿½á¹¹¡£
2¡¢ÐèÒªÉú³ÉµÄ²úÆ·¶ÔÏóµÄÊôÐÔÏ໥ÒÀÀµ£¬½¨ÔìÕßģʽ¿ÉÒÔÇ¿ÆÈÉú³É˳Ðò¡£
3¡¢ ÔÚ¶ÔÏó´´½¨¹ý³ÌÖлáʹÓõ½ÏµÍ³ÖеÄһЩÆäËü¶ÔÏó£¬ÕâЩ¶ÔÏóÔÚ²úÆ·¶ÔÏóµÄ´´½¨¹ý³ÌÖв»Ò׵õ½¡£
Ó¦Óó¡¾°
1¡¢ RTFÎĵµ½»»»¸ñʽÔĶÁÆ÷¡£
2¡¢ .NET»·¾³ÏµÄ×Ö·û´®´¦ÀíStringBuilder£¬ÕâÊÇÒ»ÖÖ¼ò»¯Á˵Ľ¨ÔìÕßģʽ¡£
3¡¢ ¡¡
×ܽá
½¨ÔìÕßģʽµÄʵÖÊÊǽâñî×é×°¹ý³ÌºÍ´´½¨¾ßÌ岿¼þ£¬Ê¹µÃÎÒÃDz»ÓÃÈ¥¹ØÐÄÿ¸ö²¿¼þÊÇÈçºÎ×é×°µÄ¡£ |