1.全局变量在使用过程中的矛盾
全局变量是在程序的整个生命周期内都可访问的变量,它们通常存储在程序的全局作用域中。在大多数编程语言中,全局变量不被推荐使用,因为它们可能导致代码不易理解、维护和测试。 一方面:数据在需要各个模块之间的传输 另一方面:面向对象编程拒绝全局变量,而在模块之间创建过多的接口函数又不利于解耦
2. Prism框架下的事件订阅
在Prism框架下,事件订阅是一种常见的模式,用于实现模块之间的通信和解耦。以下是使用Prism框架进行事件订阅的一般步骤:
(1)新建一个.cs文件并定义事件类型
public class MessageEvent : PubSubEvent<string>
{
}
(2)发布一个事件
public ViewBViewModel(IRegionManager regionManager, IEventAggregator aggregator) : base(regionManager)
{
aggregator.GetEvent<MessageEvent>().Publish("NewMessage");
}
(3)订阅一个事件
public ViewCViewModel(IRegionManager regionManager, IEventAggregator aggregator) : base(regionManager)
{
Message = "我是模块C";
aggregator.GetEvent<MessageEvent>().Subscribe(arg =>
{
Message = arg;
});
}
3. 实现效果
在ViewB的构造函数中我们发布了订阅,因此入股直接打开C,字符串处于默认的状态,此时再打开b回到C发现字符串已经发生了改变。