读书人

关于猫叫、老鼠逃走、人被惊醒的程序设

发布时间: 2012-11-23 22:54:33 作者: rapoo

关于猫叫、老鼠逃跑、人被惊醒的程序设计

题目是这样的:猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒。

要求:

1、要有联动性,老鼠和人的行为是被动的

2、考虑可扩展行,猫叫声可能会引起其他联动效应

看到这个程序设计题目,我的第一反应是用事件来解决,猫叫触发了事件,引起了老鼠的逃跑,老鼠逃跑又触发了事件导致主人被惊醒。所以按照这个思路,我做出了如下的解答。

首先,将猫、老鼠、和人分别抽象出来为三个类,分别为:Cat、Mouse、People。在Cat类中我们做如下处理:

实验效果依次如下:

关于猫叫、老鼠逃走、人被惊醒的程序设计关于猫叫、老鼠逃走、人被惊醒的程序设计关于猫叫、老鼠逃走、人被惊醒的程序设计

下面再通过另一个方式来解决这个问题。

Observer(观察者模式)

首先我们需要新建两个接口:

结果跟上边所示的一样。

好了,到这里这道程序设计题的解决方案也就是这些了,通过这两种不同的解决方案我们可以发现,在针对多个不同的观察者时,使用观察着实现联动性,比较方面,而且可扩展性也比较强,事实上观察者模式也就是主要用于对多个不同的观察者对象做出不同反应而设计的。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。

反观我们使用第一种方法事件订阅处理,可以实现多级的联动,猫叫引发老鼠跑,老鼠跑引发人醒,事件的存在是为了弥补委托的不足,事件是将事件发送者(触发事件的对象)与事件接受者(处理事件的方法)相关联的一种代理类,即事件机制是通过代理类来实现的。当一个事件被触发时,由该事件的代理来通知(调用)处理该事件的相应方法。事件多用于WinForm中的窗体的传递值,按钮的Click事件等。

这一节就到这里了,希望能给大家有所帮助,还请多多指导!

读书人网 >编程

热点推荐