Anders Liu (lover_P)的.NET天空

传播知识基于掌握知识,但又高于掌握知识。我要做一个掌握很多知识的传播知识的人!

用户操作
[即时聊天] [发私信] [加为好友]
刘彦博ID:loverP
110362次访问,排名796好友0人,关注者5
loverP的文章
原创 35 篇
翻译 5 篇
转载 0 篇
评论 191 篇
Anders Liu的公告


我写的书


购买途径:
最近评论
l763820708:有-在17号端口
txfast:这些话说的比较实际,其实说学习能力强只是一句空话,因为刚进公司,谁能够认可你的学习能力强,谁又能否定一个人的学习能力?
Wind_Eagle:想不到情人节还有心思写博客呀!不错,我有同感 !
heaso14:照着做了 还是有问题啊...

1>MSVCRT.lib(crtexew.obj) : error LNK2001: 无法解析的外部符号 _WinMain@16
1>C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\a\PureC\Rele……
jiyucn:公事上的邮件马虎不得,特别是公司间的往来,通常邮件是代表公司的行为,“毛病”一词有些过噢。不过大家都应嘎规范邮件的格式,这样才能减少不必要的误会。
文章分类
收藏
    相册
    MVP Logo
    文章用图1
    存档
    软件项目交易
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 [连载] 用C#进行思考(侧注1.1)现实生活中的生产者和消费者实例收藏

    新一篇: [连载] 用C#进行思考(三 之 前传)用委托实现回调 | 旧一篇: [连载] 用C#进行思考(二)Pull模式和Push模式

      面向对象的思想本来就是模式现实生活进行编程的一种方式,所以从生活中寻找一些实例,更有助于理解生产者和消费者。

    1. 顾客和理发师。理发师(类)提供理发的功能(方法) ,是生产者;顾客(类)使用理发师的理发功能,是消费者。
      顾客可以对理发师提出各种要求(调用方法时传递参数),而理发师不能直接对顾客提出要求;但理发师可能会让顾客“低下头”、“再抬起一点”,这需要通过回调“委婉”地完成。
    2. 老板和员工。员工(类)提供做各种工作的功能(方法),使生产者;老板(类)使用员工的各种功能,要求他们做各种工作,是消费者。
      老板可以命令员工做各种不同的工作(调用不同的方法),而员工不能对老板直接提出要求(呵呵,符合常理吧?);不过员工可能会说“老板,请你检查一下我的工作”或“老板,请你分给我xx资源”,这也是不能直接调用的,也要通过回调“委婉”地完成。

      类似的例子有很多,相信每个读者都能想出一些来。欢迎跟贴~!

    发表于 @ 2006年09月08日 02:16:00|评论(loading...)|编辑

    新一篇: [连载] 用C#进行思考(三 之 前传)用委托实现回调 | 旧一篇: [连载] 用C#进行思考(二)Pull模式和Push模式

    评论

    #Junior 发表于2006-09-08 23:55:00  IP: 124.254.34.*
    人和洗衣机的关系。洗衣机提供一种洗衣服的方法,人可以调用,同时传入洗什么种类(衣服或床单 type)和洗多少(int)这两个参数;洗完之后,洗衣机发出嗡鸣声(事件),提醒人,人再把洗好的衣服晾起来。人晾衣服这个方法,可以用委托来实现。
    #lover_P 发表于2006-09-10 05:45:00  IP: 222.130.214.*
    楼上这个例子真不错,不过后面有些含糊。
    对于洗完衣服这件事,或者用事件,或者用委托(回调),不要混用。

    用委托:在调用洗衣机的“洗衣”方法时,将人的“晾衣服”方法封装到一个委托对象中,然后将这个对象当作参数传入“洗衣”方法,这样当洗衣机洗完衣服后,调用这个委托对象即可。

    用事件:给洗衣机添加一个“洗完”的事件(蜂鸣),将人的“晾衣服”方法作为事件处理器,注册到“洗衣机.洗完”事件。
    #Rock.fq 发表于2006-09-11 14:06:00  IP: 202.165.216.*
    老师和学生。老师(类)提供传授知识的功能(方法),是生产者;学生(类)可以学习老师传授的各种知识,是消费者。老师对学生可以提出不同要求,传授不同知识。而学生不能命令老师,只能接受老师授予的知识。但学生提出“请您再讲一遍”的请求(委托)。(适用于中国国情)
    #Rock.fq 发表于2006-09-11 13:57:00  IP: 202.165.216.*
    老师和学生。老师(类)提供传授知识的功能(方法),是生产者;学生(类)接受老师授予的知识,是消费者。老师可以对学生提出不同的要求,布置作业,教给学生不同的东西。而学生不能对老师提出要求,只能接受老师的知识(只适合中国国情)。但学生可以说,老师这里没听明白,请再讲一遍。
    #lover_P 发表于2006-09-13 18:06:00  IP: 222.130.214.*
    Rock.fq完全弄反了!!
    消费者调用生产者!
    学生可以要求老师做任何东西,但老师不能对学生提出要求。如果老师要求学生写作业,应该使用事件进行回调!

    不要被现实生活中的假象蒙蔽了双眼~
    面向对象,来源于生活,高于生活
    #Junior 发表于2006-09-27 23:47:00  IP: 124.254.33.*
    using System;

    namespace myDelegate2
    {
    delegate void FixClothes();
    class Program
    {
    [STAThread]
    static void Main(string[] args)
    {
    Person Junior = new Person();
    Junior.DoHousework();
    }
    }

    class Person
    {
    Washer myWasher;
    public Person()
    {
    myWasher = new Washer();
    }

    public void DoHousework()
    {
    FixClothes fc = new FixClothes(this.SunClothes); // 创建委托,封装一个方法。
    myWasher.WashCloth(fc); // 在消费者里调用生产者的方法,并传入参数。
    }

    void SunClothes()
    {
    Console.WriteLine("sun the clothes");
    }
    }

    class Washer
    {
    public void WashCloth(FixClothes f)
    {
    Console.WriteLine("wash clothes");
    f(); // 调用委托。
    }
    }
    }

    刘sir,这是我写的这个例子,好像是个委托吧,总是觉得这个东西用的不爽,当时有点明白了,现在又有点晕,给点评一下吧。
    发表评论  


    当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
    Csdn Blog version 3.1a
    Copyright © Anders Liu