随笔 - 2  文章 - 1  评论 - 40  阅读 - 4528
  2008年3月10日
      公元2054,30界世界杯亚洲区外围赛中,中国队的最后一场比赛对韩国,只有战胜对手才能出线。 自从米卢执教中国队以来,已经有五十多年中国队再也没尝到过进军世界杯的滋味,而且恐韩症已经染了七十年之久.很多球迷从黑发人看成了白发人,但是还有部分的痴心球迷关注着这场比赛.
痴心球迷

足球比赛

        static void Main(string[] args)
        {
            FootballMatch match 
= new FootballMatch();
            Audience justin 
= new Audience("justin");
            Audience terry 
= new Audience("terry");
            match.Observers.Add(justin);
            match.Observers.Add(terry);
            match.Play();
        }

    足球比赛中可能不只球员,还有天气,裁判等各要素,需要让足球比赛和它的观察者们偶合度更小,我们尝试着用委托和事件来重构它.
足球比赛
      任何关注足球比赛的人或者事都可以通过注册事件的方式来关注它,偶合度更加松散,意味着更加灵活,这不正是ISP(接口隔离原则)所提倡的嘛:一个类对另外一个类的依赖性应当是建立在最小接口上的。下面代码中不但有足球比赛中的观众,还有天气.
     
        static void Main(string[] args)
        {
            FootballMatch match 
= new FootballMatch();
            Audience justin 
= new Audience("justin");
            Audience terry 
= new Audience("terry");
            match.BeforeMatch 
+= new MatchHandler(match_BeforeMatch);
            match.BeforeMatch 
+=new MatchHandler(justin.Excited);
            match.BeforeMatch 
+=new MatchHandler(terry.nervous);
            match.AfterMatch 
+=new MatchHandlerEnd(justin.KnowResult);
            match.AfterMatch 
+=new MatchHandlerEnd(terry.KnowResult);
            match.AfterMatch 
+= new MatchHandlerEnd(match_AfterMatch);
            match.Play();
        }

        
static void match_AfterMatch(bool isWin)
        {
            
if (isWin)
            {
                Console.WriteLine(
"Snow..");
            }
            
else
            {
                Console.WriteLine(
"Rain..");
            }
        }

        
static void match_BeforeMatch()
        {
            Console.WriteLine(
"wind.");
        }
    通过带参数的委托可以实现中国队赢球或输球后不同的结果.

   当中国队输球了,愤怒的观众把电视机砸了,天空也开始下雨了.
   你也可以任意添加观察者到这场足球比赛里,只要符合所定义委托的规定就行.
   僵化的代码需要重构,落后的中国足球体制是不是也需要重构呢?
posted @ 2008-03-10 17:36 雾里清风 阅读(1513) 评论(7) 推荐(0)
  2008年3月7日
摘要: 小明想买一台新电脑,于是他来到了武昌的街道口电脑城的一家卖组装电脑的店里。店里的员工小张热情的招待了他,给了小明一张报价单。上面有各种电脑的配件。清单如下: CPU Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/--> abstrac... 阅读全文
posted @ 2008-03-07 10:51 雾里清风 阅读(2110) 评论(30) 推荐(0)
< 2025年4月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 1 2 3
4 5 6 7 8 9 10

点击右上角即可分享
微信分享提示