我需要帮助来理解观察者模式和代表。我在另一个网站上找到了这段代码,我试图了解它实际上在做什么。有人可以帮我吗。
当我执行代码时,我收到两条消息“服务器已启动并正在运行”和“服务器已关闭,我们正在处理它,它很快就会回来”。我想我收到了两条消息,因为在 Main 中有一个 server.ServerStatus = true; 和 server.ServerStatus = false。但是,如果我注释掉 server.ServerStatus = true; 然后运行我得到消息“服务器已启动并正在运行”,但我预计只会看到“服务器已关闭,我们正在处理它,它很快就会回来。”。有人可以解释吗?苏珊
class Program
{
static void Main(string[] args)
{
Server server = new Server();
server.ServerStatusChanged += new EventHandler(ProcessServerStatus);
server.ServerStatus = true;
server.ServerStatus = false;
Console.Read();
}
public class Server
{
public event EventHandler ServerStatusChanged;
private bool _ServerStatus;
public bool ServerStatus
{
get { return this._ServerStatus; }
set {
if (this._ServerStatus == value) return; // Dont need to do anything;
if (this.ServerStatusChanged != null) // make sure the invocation list is not empty
ServerStatusChanged(value, new EventArgs()); // Firing Event
this._ServerStatus = value;
}
}
}
public static void ProcessServerStatus(object sender, EventArgs e)
{
bool status = (bool)sender;
if (status)
Console.WriteLine("Server is up and running");
else
Console.WriteLine("Server is down, We are working on it it will be back soon");
}
}