【发布时间】:2009-03-02 23:21:32
【问题描述】:
我的问题的摘要是“我有 2 个类共享一个公共接口,但是这两个类在其属性方面具有不同的行为。如果参数值无效,一个接口会引发异常,另一个会更新其内部状态来处理无效值。两个类可以共享同一个接口还是应该定义两个接口以向开发人员表明两者具有不同的行为?"
我会尝试用一些代码来澄清。我在下面定义了接口。
公共接口 IStationDictionary { bool this[string stationId] { get;放; } }还有一个实现接口的类,这个类用来设置数字IO板上的输出端口。
公共类 DigitalStationAdapter : IStationDictionary { public bool this[string stationId] { 获取{返回端口[stationId].Value; } 设置 { 端口 [stationId].Value = 值; } } 公共无效 AddDigitalStation(字符串 stationId,DigitalIoPort 端口) { ports.Add(stationId, 端口); } 私有 IDictionary我还有一个类可以记录哪些站点的值发生了更改,以便可以将这些更改传播到数字 IO。
公共类 StationTransitions : IStationDictionary { public bool this[string stationId] { 得到 { 布尔结果=假; 如果(更改。包含密钥(stationId)) 结果=更改[stationId]; 返回结果; } 放 { if(!changes.ContainsKey(stationId)) 更改。添加(stationId,值); 别的 更改[stationId] = 值; } } 公共 IDictionary GetChanges() { IDictionary因此,虽然两个类都实现了相同的接口,但如果您尝试使用不在字典中的 stationId 访问索引器,DigitalStationAdapter 将抛出 KeyNotFoundException。而 StationTransitions 将成功,即不同的行为。可以吗,我以为接口是用来定义行为和结构的?
基思。
【问题讨论】: