我有一个POCO类,其中包含许多可以获取/设置的属性。
在此类上实现INotifyPropertyChanged是否违反了POCO的原则?
我希望另一个类通知POCO的任何更改并将这些更改写入文件,让它监听属性更改似乎是最好的方法
答案 0 :(得分:2)
您需要以这种或那种方式通知您的应用程序数据库中的更改(前提是一次有多个实例)。
让您的POCO实施INotifyPropertyChanged
是一种合法的方法。请注意,它位于System.ComponentModel
命名空间中 - 虽然在WPF中广泛使用 - 但并不是一件好事。
一种替代方案可以通过一些CQRS方案,通过专门设计的接口通知您的POCO消费服务。
答案 1 :(得分:2)
只要它符合您的要求且您知道自己在做什么,就没有问题。
在软件世界中,人们通常会多余地面对同样的问题。为了以一致和经过测试/验证的方式处理这些问题,引入了模式/范例。所有模式/范例通常都是制定准则的。他们中的大多数(尽管很少)没有说明应该如何实施。
也就是说,由实现模式的开发人员决定实现细节。确保通过实施不会产生新问题。
术语POCO源自其Java等效POJO。以下是Martin Fowler says关于POJO的信息:
在演讲中,我们指出了将业务逻辑编码为常规Java对象而不是使用Entity Bean的许多好处。我们想知道为什么人们如此反对在他们的系统中使用常规对象并得出结论,这是因为简单对象缺少一个奇特的名字。所以我们给了他们一个,它很好地接受了。
请注意上面引用的粗体文字。
考虑到这一点,在POCO课程上实施INotifyPropertyChanged
不应被视为违反POCO原则。
关于INotifyPropertyChanged
和MVVM关系:接口在System.ComponentModel
中定义,并且不与MVVM紧密绑定。