gpt4 book ai didi

c# - C# 中的 Observable 和 Observer(java.util 包)等价物

转载 作者:行者123 更新时间:2023-11-30 09:25:18 24 4
gpt4 key购买 nike

我遵循Head First Design Patterns 书中的所有示例,我站在第二章:观察者模式。该章第一部分中包含的基本(脏示例(手工制作))很容易用 C# 实现(来自 Java 代码示例)。检查一下:

它工作正常。现在我的问题是关于在 C# 中是否有来自 Java 的 Observable 类和 Observer 接口(interface)的内置等价物。参见 this image (摘自 Head First Design Patterns)

我尝试了各种教程、指南和其他资源来实现该实现。

问候,约翰·奥尔蒂斯

最佳答案

观察者模式就是……一种模式。您可以像在 Java 中一样在 C# 中使用类和接口(interface)实现该模式

http://www.fatagnus.com/the-observer-pattern-in-csharp/

要回答您的问题,不,在 C# 中没有与 Java 关键字等效的保留关键字。也就是说,您可以对类/接口(interface)/事件做完全相同的事情。这是 Jon Skeet 在 Stack Overflow 上的一个很好的例子。

using System;

class Observable
{
public event EventHandler SomethingHappened;

public void DoSomething()
{
EventHandler handler = SomethingHappened;
if (handler != null)
{
handler(this, EventArgs.Empty);
}
}
}

class Observer
{
public void HandleEvent(object sender, EventArgs args)
{
Console.WriteLine("Something happened to " + sender);
}
}

class Test
{
static void Main()
{
Observable observable = new Observable();
Observer observer = new Observer();
observable.SomethingHappened += observer.HandleEvent;

observable.DoSomething();
}
}

Super-simple example of C# observer/observable with delegates

http://yoda.arachsys.com/csharp/events.html

关于c# - C# 中的 Observable 和 Observer(java.util 包)等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15376474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com