猫大叫一声,所有的老鼠都开始逃跑,主人被惊醒
|
源代码网整理以下 要求: 1.要有联动性,老鼠和主人的行为是被动的。源代码网整理以下 源代码网整理以下2.考虑可扩展性,猫的叫声可能引起其他联动效应。 源代码网整理以下三个类,猫,老鼠和主人 源代码网整理以下猫 源代码网整理以下 源代码网整理以下public sealed class Cat 软件开发网 www.mscto.com 源代码网整理以下{ 源代码网整理以下 // 猫叫时引发的事件 源代码网整理以下 public event EventHandler Calling; 源代码网整理以下 软件开发网 www.mscto.com 源代码网整理以下 public void Call() 源代码网整理以下 { 源代码网整理以下 Console.WrietLine("猫叫了..."); 源代码网整理以下 if(Calling != null) // 检查是否有事件注册 源代码网整理以下 Calling(this, EventArgs.Empty); // 调用事件注册的方法。 源代码网整理以下 } 源代码网整理以下} 源代码网整理以下// 老鼠,提供一个方法表示逃跑 源代码网整理以下public sealed calss Mouse 源代码网整理以下{ 源代码网整理以下 public void Escape(object sender, EventArgs e) 软件开发网 www.mscto.com 源代码网整理以下 { 源代码网整理以下 Console.WriteLine("老鼠逃跑了..."); 源代码网整理以下 } 源代码网整理以下} 源代码网整理以下 软件开发网 www.mscto.com 源代码网整理以下// 主人,发生猫叫的时候惊醒 源代码网整理以下public sealed class Master 源代码网整理以下{ 软件开发网 www.mscto.com
源代码网整理以下 public void Wakened(object sender, EventArgs e) 源代码网整理以下 { 源代码网整理以下 Console.WriteLine("主人惊醒了...); 源代码网整理以下 } 源代码网整理以下} 软件开发网 www.mscto.com 源代码网整理以下// 用于测试的执行方法 源代码网整理以下// 程序入口点 源代码网整理以下public static Program 源代码网整理以下{ 源代码网整理以下 public static int Main(string[] args) 软件开发网 www.mscto.com 源代码网整理以下 { 软件开发网 www.mscto.com
源代码网整理以下 // 建立猫 源代码网整理以下 Cat cat = new Cat(); 源代码网整理以下 // 建立老鼠 源代码网整理以下 Mouse mouse = new Mouse(); 源代码网整理以下 // 建立主人 源代码网整理以下 Master master = new Master(); 源代码网整理以下 源代码网整理以下 // 注册事件 源代码网整理以下 cat.Calling += new EventHandler(mouse.Escape); 源代码网整理以下 cat.Calling += new EventHandler(master.Wakened); 源代码网整理以下 软件开发网 www.mscto.com 源代码网整理以下 // 猫开始叫 源代码网整理以下 cat.Call(); 源代码网整理以下 } 源代码网整理以下} 源代码网整理以下 源代码网整理以下要点:1. 联动效果,运行代码只要执行Cat.Cryed()方法。2. 对老鼠和主人进行抽象 源代码网整理以下 } 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(); } } 源代码网推荐 源代码网供稿. |
