ในรูปแบบนี้คุณมีผู้เผยแพร่ที่จะใช้ตรรกะบางอย่างและเผยแพร่ "เหตุการณ์"
จากนั้นผู้เผยแพร่จะส่งกิจกรรมของตนให้เฉพาะสมาชิกที่สมัครรับข้อมูลเพื่อรับกิจกรรมที่ระบุ
ใน C # วัตถุใด ๆ สามารถเผยแพร่ชุดของเหตุการณ์ที่แอปพลิเคชันอื่นสามารถสมัครสมาชิกได้
เมื่อคลาสการเผยแพร่เพิ่มกิจกรรมแอปพลิเคชันที่สมัครเป็นสมาชิกทั้งหมดจะได้รับแจ้ง
รูปต่อไปนี้แสดงกลไกนี้
ตัวอย่างที่ง่ายที่สุดที่เป็นไปได้ในเหตุการณ์และตัวแทนใน C #:
รหัสเป็นคำอธิบายในตัวเองนอกจากนี้ฉันยังได้เพิ่มความคิดเห็นเพื่อล้างรหัส
using System;
public class Publisher
{
public delegate void TickHandler(Publisher m, EventArgs e);
public TickHandler Tick;
public EventArgs e = null;
public void Start()
{
while (true)
{
System.Threading.Thread.Sleep(300);
if (Tick != null)
{
Tick(this, e);
}
}
}
}
public class Subscriber1
{
public void Subscribe(Publisher m)
{
m.Tick += HeardIt;
}
private void HeardIt(Publisher m, EventArgs e)
{
System.Console.WriteLine("Heard It by Listener");
}
}
public class Subscriber2
{
public void Subscribe2(Publisher m)
{
m.Tick += HeardIt;
}
private void HeardIt(Publisher m, EventArgs e)
{
System.Console.WriteLine("Heard It by Listener2");
}
}
class Test
{
static void Main()
{
Publisher m = new Publisher();
Subscriber1 l = new Subscriber1();
Subscriber2 l2 = new Subscriber2();
l.Subscribe(m);
l2.Subscribe2(m);
m.Start();
}
}
เอาท์พุต:
ได้ยินโดยผู้ฟัง
ได้ยินโดย Listener2
ได้ยินโดยผู้ฟัง
ได้ยินโดย Listener2
ได้ยินโดยผู้ฟัง . . (ครั้งไม่มีที่สิ้นสุด)