| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1187 人关注过本帖, 1 人收藏
标题:趣味 C#
只看楼主 加入收藏
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
结帖率:66.67%
收藏(1)
 问题点数:0 回复次数:8 
趣味 C#
猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒

要求:  1.要有联动性,老鼠和主人的行为是被动的。
        2.考虑可扩展性,猫的叫声可能引起其他联动效应。

    public interface Observer
    {
        void Response();    //观察者的响应,如是老鼠见到猫的反映
    }
    public interface Subject
    {
        void AimAt(Observer obs);  //针对哪些观察者,这里指猫的要扑捉的对象---老鼠
    }
    public class Mouse : Observer
    {
        private string name;
        public Mouse(string name, Subject subj)
        {           
            this.name = name;
            subj.AimAt(this);
        }
        
        public void Response()
        {
            Console.WriteLine(name + " attempt to escape!");
        }
    }
    public class Master : Observer
    {   
        public Master(Subject subj)
        {           
            subj.AimAt(this);
        }
        
        public void Response()
        {
            Console.WriteLine("Host waken!";
        }  
    }
 
    public class Cat : Subject
    {
        private ArrayList observers;
        public Cat()
        {   
            this.observers = new ArrayList();
        }
        public void AimAt(Observer obs)
        {
            this.observers.Add(obs);
        }
        public void Cry()
        {
            Console.WriteLine("Cat cryed!";
            foreach (Observer obs in this.observers)
            {
                obs.Response();
            }
        }
    }
    class MainClass
    {      
        static void Main(string[] args)
        {
            Cat cat = new Cat();
            Mouse mouse1 = new Mouse("mouse1", cat);
            Mouse mouse2 = new Mouse("mouse2", cat);
            Master master = new Master(cat);
            cat.Cry();
        }
    }
搜索更多相关主题的帖子: 趣味 
2009-11-24 17:38
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
面试宝典上看到过

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-11-24 19:23
long50248120
Rank: 1
等 级:新手上路
帖 子:28
专家分:8
注 册:2009-11-16
收藏
得分:0 
讲的主要是析构函数与接口之类的问题,这些问题我至今还不是很理解
2009-12-02 14:21
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
这个是一个非常简单面向对象编程实例,多看几次就会理解的..

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-12-02 16:14
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
为什么这个理解起来比过程语言还费劲呢,有啥好处啊

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-12-02 17:21
jedypjd
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:9
帖 子:1096
专家分:4969
注 册:2009-7-27
收藏
得分:0 
语句跳转很错杂

天涯无岁月,歧路有风尘,百年浑似醉,是非一片云
2009-12-02 17:21
kiska3088915
Rank: 2
等 级:论坛游民
帖 子:72
专家分:12
注 册:2009-11-7
收藏
得分:0 
说实话,现在我也就用用循环、选择的水平,像什么多态性啊、继承啊、构造函数啊,都没用到,这么深奥的东西还真看不懂,。,,,,,
2009-12-03 00:55
hutianqing
Rank: 1
等 级:新手上路
帖 子:10
专家分:5
注 册:2009-10-20
收藏
得分:0 
为什么复制到VS2005中,ArrayList这个地方会发生错误 编译不过去呢?
2009-12-18 17:57
baikil
Rank: 10Rank: 10Rank: 10
来 自:X星球
等 级:青峰侠
威 望:4
帖 子:282
专家分:1580
注 册:2009-7-20
收藏
得分:0 
呵呵,语言从以前的面向过程的编程到现在的面向对象编程有很大的不同,
但只会以前的过程编程思想用过现在这高级言中没有太大的优势,反而会不如
那些低级语言的开发.

ArrayList这个地方会发生错误 是你没有添加:using System.Collections;引用.

自创QQ群64885635,方便C#学习交流.希望各项工作路好学都好入!
2009-12-21 08:46
快速回复:趣味 C#
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024848 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved