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 }
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 }
建造模式:将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部表象的产品对象。建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节。建造模式可以强制实行一种分步骤进行的建造过程。