Eme*_*ion 6 .net c# design-patterns
首先,这只是概念,我还没有完成实际的编程.情况就是这样:
我有一个A类,它使用Filesystemwatcher来监视文件夹中的变化.(使用活动)
然后我有一个'Collection Class'B,它有一个A的列表.
现在我想要发生的事情如下,
文件夹发生更改,A检测到此消息并向B发送消息,B将此消息传送到C类.然后,C类开始更新GUI的方法.(做了哪些改变等...)
现在我已经在这个主题上搜索并思考了很长时间,但找不到解决方案.但是,我发现了2种设计模式:
调解员和观察员.
作为一名软件工程师,我曾在某种程度上制作了Observer模式,因此我了解了一些基础知识.
现在问我的问题:
在这种情况下最好使用什么模式?
如何使B将消息发送给C?
我是否需要自定义事件/代理才能将A传输数据发送给B,或者我可以使用内置事件吗?
PS:我使用C#作为我的编程语言.
编辑:感谢大家帮助我,投票正在进行中.
观察者很好.您可以使C成为B的观察者(以便B将事件从A发送到C),或使C直接监听A(这可能是更糟糕的选择,因为它创建了从C到A的直接依赖).
请注意,这基本上是模型 - 视图 - 控制器的变体,其中A是模型,C是视图.现在B是否会成为一个合适的控制器在很大程度上取决于它的职责:如果它只是一个A的集合,那么将它作为一个控制器并不是一个好主意.没有关于你的课程和职责的更多细节,很难说更多.
根据我的理解,有一堆“A”对象将事件异步传递给单个 B,而 B 又将该信息传递给单个 C。
因此,让 B 包含并观察 A,让 C 观察 B。
如果您有很多 A,您可能希望 B 在通知 C 之前对 A 的事件进行一些收集/缓存。特别是如果 C 正在为用户界面提供服务。
旁注:不要过度模式化你的软件。尝试保持开放的心态,总是找到最简单、最容易的解决方案。仅在适当的情况下使用模式,而不仅仅是因为它是可能的。我见过很多人在不必要的地方使用代理、命令模式、观察者、MVC、中介者等。
祝你好运。
| 归档时间: |
|
| 查看次数: |
721 次 |
| 最近记录: |