程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 觀察者模式:貓叫鼠跑人醒(C#),

觀察者模式:貓叫鼠跑人醒(C#),

編輯:C#入門知識

觀察者模式:貓叫鼠跑人醒(C#),


  本著菜鳥先飛的想法,決定把平時遇到的知識點記錄下來,一來是加深理解,二來是方便以後自己查閱。當您看到我這篇文章的時候,覺得代碼有哪裡不足的地方,請多指教,謝謝。(命名不規范是為了加深自己的理解,多多見諒。)

  觀察者模式:即當目標對象狀態或者是行為發生改變時,正在觀察該目標對象的觀察者們做出一系列自動反應。

  

1.接口實現

public interface Oberver
{
void 坐出反應();
}
public interface BObserver
{
void 反應(Oberver o);

}

public class 老鼠 : Oberver
{
public 老鼠(BObserver b)
{
b.反應(this);


}
public void 坐出反應()
{
Console.WriteLine("老鼠跑了...");

}

}

public class 人 : Oberver
{
public 人(BObserver b)
{
b.反應(this);
}
public void 坐出反應()
{
Console.WriteLine("人醒了...");

}

}


public class 貓 : BObserver
{

List<Oberver> list;
public 貓()
{

list = new List<Oberver>();
}

public void 反應(Oberver o)
{

list.Add(o);


}

public void 貓叫()
{

foreach (Oberver o in list)
{
o.坐出反應();
}
}

2.委托和事件

public delegate void 處理();

public abstract class 被觀察
{
public event 處理 處理事件;

public void Test()
{
if (處理事件 != null) this.處理事件();
}

 

}

public class 貓 : 被觀察
{
public void 貓叫()
{
Console.WriteLine("貓叫了!");
this.Test();
}


}

public abstract class 觀察者2
{
public 觀察者2(被觀察 b)
{

b.處理事件 += new 處理(觀察做出反應);

}

public abstract void 觀察做出反應();

}

public class 老鼠 : 觀察者2
{

public 老鼠(被觀察 b) : base(b) { }
public override void 觀察做出反應()
{
Console.WriteLine("老鼠跑了......");
}


}

public class 人 : 觀察者2
{

public 人(被觀察 b) : base(b) { }
public override void 觀察做出反應()
{
Console.WriteLine("人醒了......");
}

}

 

 第一次發帖感覺好亂,多多包含。—菜鳥先飛

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved