对于公共界面,这将是一个更好的设计:
WriteValue(DeviceValueType.MachineName,"micks machine");
或者
WriteMachineName("Micks machine");
如果您使用类型 1,那么您只需要一个这样的通用接口,并且您可以通过将项目添加到枚举来写入任意数量的DeviceValueType 。
第二种类型更具体,因为它只会将值写入由其方法名称表示的特定类型。但是这些方法在类型安全方面有很大的优势。
例如:让我们考虑另一种类型
WriteValue(DeviceValueType.SleepDelay,"25");
和
WriteSleepDelay(25);
请注意,此处类型 2 具有优势,因为我可以指定预期的类型。如果我要使用类型 1,那么我必须将值转换为 int,然后如果值不在预期范围内,则抛出异常。如果我必须传递复杂类型,这将变得更加困难。
总而言之:
类型 1:通用。该接口只需要公开一种方法。参数没有类型安全。类型 2:特定的。该接口将需要与类型一样多的方法。键入安全。
解决此问题的一般建议方法是什么?
我正在使用 C#,但我相信这个问题与语言无关。