今天看了十分之七的7in10笔记:泡妞之桥梁模式 ,
----------
泡妞的例子
BRIDGE —早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了。
---------------
看完后想到一个问题,使用桥梁模式,按照十分之七的例子,的确可以解决“早上碰到MM新做了个发型怎么说”这种问题,但如果进一步,遇到“早上遇到MM做了个新发型,同时衣服也是一件新的”怎么办呢? 好像不好解决。
如是,按照自己的理解写了以下方案,设计代码为:
请各位指教!
附:程序文件https://files.cnblogs.com/huangzhenwu/BoyMM.rar
----------
泡妞的例子
BRIDGE —早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了。
---------------
看完后想到一个问题,使用桥梁模式,按照十分之七的例子,的确可以解决“早上碰到MM新做了个发型怎么说”这种问题,但如果进一步,遇到“早上遇到MM做了个新发型,同时衣服也是一件新的”怎么办呢? 好像不好解决。
如是,按照自己的理解写了以下方案,设计代码为:
1
using System;
2
using System.Collections;
3
using System.Data ;
4![](/Images/OutliningIndicators/None.gif)
5
public class MyClass
6
{
7
public static void Main()
8
{
9
Enviroment env = EnvFactory.GeTCurrentEnv(DateTime.Now );
10
11
MM mm = new MM( true , true )
12
13
Me i = new Me();
14
15
env.碰面( mm , i );
16
17
RL();
18
}
19
20
Helper methods
38
}
39![](/Images/OutliningIndicators/None.gif)
40
public class MM
41
{
42
public MM()
43
{
44
//MMPropertyAndGoodWords.xml从动态构建MM的属性
45
}
46
47
public MM(bool is新发型 , bool is穿新衣服)
48
{
49
//动态构建MM的属性
50
51
//设置Is新发型 = is新发型;
52
//Is穿新衣服 = is穿新衣服;
53
}
54
//public bool Is卷发 = false;
55
//public bool Is穿新衣服 = false;
56
}
57![](/Images/OutliningIndicators/None.gif)
58
public class Me
59
{
60
public void SayToMM(Enviroment ev, MM mm)
61
{
62
SayHello(ev);
63
SayGood();
64
}
65
66
public void SayHello(Enviroment ev)
67
{
68
Console.WriteLine ( ev.HelloWords() );
69
}
70
71
public void SayGood(MM mm)
72
{
73
//读配置文件
74
DateSet ds = new DataSet();
75
ds.ReadXml(Application.StartupPath + "\\MMPropertyAndGoodWords.xml");
76
foreach( Property prt in mm.Properties)
77
{
78
if( prt == true )
79
{
80
DataRow dr = ((DataRow[])ds.Tables[0].Select("Property='" + prt.ToString()+"'"))[0] ;
81
Console.WriteLine ( dr["赞美词"] );
82
}
83
}
84
}
85
}
86![](/Images/OutliningIndicators/None.gif)
87![](/Images/OutliningIndicators/None.gif)
88
public class EnvFactory
89
{
90
public Enviroment GeTCurrentEnv(DateTime time)
91
{
92
Enviroment env = null;
93
94
switch( time.Hour)
95
{
96
case 大于0小于12 :
97
env = new Morning(); break;
98
case 大于等于12小于14 :
99
env = new Moon() ; break;
100
case 大于等于14小于18 :
101
env = new AfterNoon(); break;
102
case 大于等于18小于24 :
103
env = new Night(); break;
104
default:
105
env = new Envirpment();
106
break;
107
}
108
}
109
}
110![](/Images/OutliningIndicators/None.gif)
111
public class Enviroment
112
{
113
public virtual string HelloWords()
114
{
115
}
116
117
public void 碰面(MM mm, Me i)
118
{
119
i.SayToMM(this, mm);
120
}
121
}
122![](/Images/OutliningIndicators/None.gif)
123
public class Night : Enviroment
124
{
125
public override string HelloWords()
126
{
127
return "晚上好!";
128
}
129
}
130![](/Images/OutliningIndicators/None.gif)
131
public class Morning : Enviroment
132
{
133
public override string HelloWords()
134
{
135
return "早上好!";
136
}
137
}
138![](/Images/OutliningIndicators/None.gif)
139
public class Noon : Enviroment
140
{
141
public override string HelloWords()
142
{
143
return "中午好!";
144
}
145
}
146![](/Images/OutliningIndicators/None.gif)
147
public class AfterNoon : Enviroment
148
{
149
public override string HelloWords()
150
{
151
return "下午好!";
152
}
153
}
部分地方,使用说明和伪码表示。![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/None.gif)
4
![](/Images/OutliningIndicators/None.gif)
5
![](/Images/OutliningIndicators/None.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/ContractedSubBlock.gif)
38
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
39
![](/Images/OutliningIndicators/None.gif)
40
![](/Images/OutliningIndicators/None.gif)
41
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/InBlock.gif)
51
![](/Images/OutliningIndicators/InBlock.gif)
52
![](/Images/OutliningIndicators/InBlock.gif)
53
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
54
![](/Images/OutliningIndicators/InBlock.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
57
![](/Images/OutliningIndicators/None.gif)
58
![](/Images/OutliningIndicators/None.gif)
59
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
60
![](/Images/OutliningIndicators/InBlock.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
65
![](/Images/OutliningIndicators/InBlock.gif)
66
![](/Images/OutliningIndicators/InBlock.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
68
![](/Images/OutliningIndicators/InBlock.gif)
69
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
70
![](/Images/OutliningIndicators/InBlock.gif)
71
![](/Images/OutliningIndicators/InBlock.gif)
72
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
73
![](/Images/OutliningIndicators/InBlock.gif)
74
![](/Images/OutliningIndicators/InBlock.gif)
75
![](/Images/OutliningIndicators/InBlock.gif)
76
![](/Images/OutliningIndicators/InBlock.gif)
77
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
78
![](/Images/OutliningIndicators/InBlock.gif)
79
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
80
![](/Images/OutliningIndicators/InBlock.gif)
81
![](/Images/OutliningIndicators/InBlock.gif)
82
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
83
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
84
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
85
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
86
![](/Images/OutliningIndicators/None.gif)
87
![](/Images/OutliningIndicators/None.gif)
88
![](/Images/OutliningIndicators/None.gif)
89
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
90
![](/Images/OutliningIndicators/InBlock.gif)
91
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
92
![](/Images/OutliningIndicators/InBlock.gif)
93
![](/Images/OutliningIndicators/InBlock.gif)
94
![](/Images/OutliningIndicators/InBlock.gif)
95
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
96
![](/Images/OutliningIndicators/InBlock.gif)
97
![](/Images/OutliningIndicators/InBlock.gif)
98
![](/Images/OutliningIndicators/InBlock.gif)
99
![](/Images/OutliningIndicators/InBlock.gif)
100
![](/Images/OutliningIndicators/InBlock.gif)
101
![](/Images/OutliningIndicators/InBlock.gif)
102
![](/Images/OutliningIndicators/InBlock.gif)
103
![](/Images/OutliningIndicators/InBlock.gif)
104
![](/Images/OutliningIndicators/InBlock.gif)
105
![](/Images/OutliningIndicators/InBlock.gif)
106
![](/Images/OutliningIndicators/InBlock.gif)
107
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
108
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
109
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
110
![](/Images/OutliningIndicators/None.gif)
111
![](/Images/OutliningIndicators/None.gif)
112
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
113
![](/Images/OutliningIndicators/InBlock.gif)
114
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
115
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
116
![](/Images/OutliningIndicators/InBlock.gif)
117
![](/Images/OutliningIndicators/InBlock.gif)
118
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
119
![](/Images/OutliningIndicators/InBlock.gif)
120
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
121
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
122
![](/Images/OutliningIndicators/None.gif)
123
![](/Images/OutliningIndicators/None.gif)
124
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
125
![](/Images/OutliningIndicators/InBlock.gif)
126
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
127
![](/Images/OutliningIndicators/InBlock.gif)
128
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
129
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
130
![](/Images/OutliningIndicators/None.gif)
131
![](/Images/OutliningIndicators/None.gif)
132
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
133
![](/Images/OutliningIndicators/InBlock.gif)
134
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
135
![](/Images/OutliningIndicators/InBlock.gif)
136
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
137
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
138
![](/Images/OutliningIndicators/None.gif)
139
![](/Images/OutliningIndicators/None.gif)
140
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
141
![](/Images/OutliningIndicators/InBlock.gif)
142
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
143
![](/Images/OutliningIndicators/InBlock.gif)
144
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
145
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
146
![](/Images/OutliningIndicators/None.gif)
147
![](/Images/OutliningIndicators/None.gif)
148
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
149
![](/Images/OutliningIndicators/InBlock.gif)
150
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
151
![](/Images/OutliningIndicators/InBlock.gif)
152
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
153
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
请各位指教!
附:程序文件https://files.cnblogs.com/huangzhenwu/BoyMM.rar