惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
V
Visual Studio Blog
The GitHub Blog
The GitHub Blog
Apple Machine Learning Research
Apple Machine Learning Research
J
Java Code Geeks
T
Tailwind CSS Blog
大猫的无限游戏
大猫的无限游戏
Jina AI
Jina AI
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Hugging Face - Blog
Hugging Face - Blog
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
罗磊的独立博客
人人都是产品经理
人人都是产品经理
H
Heimdal Security Blog
Last Week in AI
Last Week in AI
博客园 - 【当耐特】
Cyberwarzone
Cyberwarzone
Google DeepMind News
Google DeepMind News
雷峰网
雷峰网
Hacker News: Ask HN
Hacker News: Ask HN
Webroot Blog
Webroot Blog
Microsoft Azure Blog
Microsoft Azure Blog
MyScale Blog
MyScale Blog
A
About on SuperTechFans
V2EX - 技术
V2EX - 技术
小众软件
小众软件
博客园 - Franky
博客园 - 司徒正美
P
Privacy International News Feed
爱范儿
爱范儿
U
Unit 42
博客园 - 叶小钗
The Hacker News
The Hacker News
C
Check Point Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Simon Willison's Weblog
Simon Willison's Weblog
N
News and Events Feed by Topic
D
Docker
T
Threatpost
MongoDB | Blog
MongoDB | Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
H
Help Net Security
L
LINUX DO - 最新话题
Security Latest
Security Latest
T
The Exploit Database - CXSecurity.com
S
SegmentFault 最新的问题
A
Arctic Wolf
Spread Privacy
Spread Privacy

博客园 - kevin

[转]软件开发者面试百问 招聘c#工程师3名-深圳 [编评]从08软件行业薪酬行情聊“软件已经走下圣坛?” SQLServer数据库的备份/恢复的3中策略实例 .Net混淆研究(二)---主流工具的比较分析 WebService 操作超时的问题及其解决办法 - kevin - 博客园 【编选】单元测试error MSB3113的解决办法 [收集]C# 3.0,3.5 相关资源下载 网络负载平衡(NLB)资料收集 .Net混淆研究(一)---基本原理和利弊 关于时间转字符串的格式设置的几种策略 .Net构建于使用web service 实例 [转载]索引的优点和缺点----数据库设计、面试必看 警惕招聘诈骗 网络一大抄,无耻的网站 珠海软件环境如何?东方海外呢? “深圳退保潮”之你知道吗? [推荐][转]小菜编程成长记 一篇好文解释为何房价如此高,肉价涨得这么快[转帖]
设计模式-看 "泡妞之桥梁模式" 随想
kevin · 2008-02-19 · via 博客园 - kevin

今天看了十分之七7in10笔记:泡妞之桥梁模式
----------
泡妞的例子
BRIDGE —早上碰到MM,要说早上好,晚上碰到MM,要说晚上好;碰到MM穿了件新衣服,要说你的衣服好漂亮哦,碰到MM新做的发型,要说你的头发好漂亮哦。不要问我“早上碰到MM新做了个发型怎么说”这种问题,自己用BRIDGE组合一下不就行了。
---------------

 看完后想到一个问题,使用桥梁模式,按照十分之七的例子,的确可以解决“早上碰到MM新做了个发型怎么说”这种问题,但如果进一步,遇到“早上遇到MM做了个新发型,同时衣服也是一件新的”怎么办呢? 好像不好解决。

如是,按照自己的理解写了以下方案,设计代码为:

  1using System;
  2using System.Collections;
  3using System.Data ;
  4
  5public 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
 40public 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
 58public 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
 87
 88public 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
111public 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
123public class Night : Enviroment
124{
125    public override string HelloWords()
126    {
127     return "晚上好!";
128    }

129}

130
131public class Morning : Enviroment
132{
133    public override string HelloWords()
134    {
135     return "早上好!";
136    }

137}

138
139public class Noon : Enviroment
140{
141    public override string HelloWords()
142    {
143     return "中午好!";
144    }

145}

146
147public class AfterNoon : Enviroment
148{
149    public override string HelloWords()
150    {
151     return "下午好!";
152    }

153}

部分地方,使用说明和伪码表示。

请各位指教!

附:程序文件https://files.cnblogs.com/huangzhenwu/BoyMM.rar