2.搞笑版生成器模式及其实现

2、BUILDER—MM最爱听的就是“我爱你”这句话了,见到不同地方的MM,要能够用她们的方言跟她说这句话哦,我有一个多种语言翻译机,上面每种语言都有一个按键,见到MM我只要按对应的键,它就能够用相应的语言说出“我爱你”这句话了,国外的MM也可以轻松搞掂,这就是我的“我爱你”builder。(这一定比美军在伊拉克用的翻译机好卖) 

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Linq;
  4 using System.Text;
  5 using System.Collections;
  6 
  7 namespace builder
  8 {
  9     //抽象生成器类
 10     public abstract class Builder
 11     {
 12         public abstract void BuildWord();
 13         public abstract void BuildStatement();
 14         public abstract void BuildSentence();
 15         public abstract Language GetLanguage();   
 16     }
 17 
 18     //英语生成器类
 19     public class EnglishBuilder : Builder
 20     {
 21         Language english = new English();
 22         public override void BuildWord()
 23         {
 24             english.Parts.Add(new EnglishWord());
 25         }
 26 
 27         public override void BuildStatement()
 28         {
 29             english.Parts.Add(new EnglishStatement());
 30         }
 31 
 32         public override void BuildSentence()
 33         {
 34             english.Parts.Add(new EnglishSentence());
 35         }
 36 
 37         public override Language GetLanguage()
 38         {
 39             Console.WriteLine("I Love You.");
 40             return english;
 41         }
 42     }
 43 
 44     //中文生成器类
 45     public class ChineseBulider : Builder
 46     {
 47         Language chinese = new Chinese();
 48         public override void BuildWord()
 49         {
 50             chinese.Parts.Add(new ChineseWord());
 51         }
 52 
 53         public override void BuildStatement()
 54         {
 55             chinese.Parts.Add(new ChineseStatement());
 56         }
 57 
 58         public override void BuildSentence()
 59         {
 60             chinese.Parts.Add(new ChineseSentence());
 61         }
 62 
 63         public override Language GetLanguage()
 64         {
 65             Console.WriteLine("爱老虎油");
 66             return chinese;
 67         }
 68     }
 69 
 70     //抽象语言类
 71     public abstract class Language
 72     {
 73         private ArrayList parts = new ArrayList(12);
 74         public ArrayList Parts
 75         {
 76             get { return parts; }
 77         }    
 78     }
 79 
 80     //英语类
 81     public class English : Language
 82     {
 83     }
 84 
 85     //中文类
 86     public class Chinese : Language
 87     {
 88     }
 89 
 90     //最强大的翻译器类
 91     public class Translator
 92     {
 93         public Language SayILoveYou(Builder builder)
 94         {
 95             builder.BuildWord();
 96             builder.BuildWord();
 97             builder.BuildWord();
 98             builder.BuildWord();
 99             builder.BuildWord();
100             builder.BuildWord();
101             builder.BuildWord();
102 
103             builder.BuildStatement();
104             builder.BuildStatement();
105             builder.BuildStatement();
106 
107             builder.BuildWord();
108 
109             return builder.GetLanguage();
110         }
111     }
112 
113     //抽象字类
114     public abstract class Word
115     {
116     }
117 
118     //抽象词类
119     public abstract class Statement
120     {
121     }
122 
123     //抽象句类
124     public abstract class Sentence
125     {
126     }
127 
128     //英语字类
129     public class EnglishWord:Word
130     {
131     }
132 
133     //英语词类
134     public class EnglishStatement : Statement
135     {
136     }
137 
138     //英语句类
139     public class EnglishSentence : Sentence
140     {
141     }
142 
143     //中文字类
144     public class ChineseWord : Word
145     {
146     }
147 
148     //中文词类
149     public class ChineseStatement : Statement
150     {
151     }
152 
153     //中文句类
154     public class ChineseSentence : Sentence
155     {
156     }
157 
158     class Client
159     {
160         static void Main(string[] args)
161         {
162             //来到英国了,想要把妹,拿出翻译机说说MM最爱听的三个字:
163             Translator translator1 = new Translator();
164             translator1.SayILoveYou(new EnglishBuilder());
165 
166             //来到中国了,想要把妹,拿出翻译机说说MM最爱听的三个字:
167             Translator translator2 = new Translator();
168             translator2.SayILoveYou(new ChineseBulider());
169         }
170     }

171 } 

建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。 
posted @ 2011-03-31 05:24  山之松  阅读(167)  评论(0编辑  收藏  举报