在对C#中的继承概念的实际使用进行研究时,我编写了一个有趣的代码模式。非泛型接口I
多次从泛型类型I<T>
继承,每个接口都有不同的类型参数。 I
从I<T>
继承的唯一原因是为了声明重载,I<T>
在代码中的任何地方都不会被引用,除了继承关系。举例说明:
interface Combined : Operations<Int32>, Operations<Int64>, Operations<double> {}
interface Operations<T> {
T Add(T left, T right);
T Multiply(T left, T right);
}
实际上,IOperations
接口有30个带有大量XML文档的方法,所以不想多次重复这些声明似乎是合乎逻辑的。我搜索了'重载重复设计'和'方法声明重用设计模式'等但找不到任何有用的信息。
也许这种模式在支持多重继承的语言中有更深刻的用途,比如C ++,也可以提供操作的实现。
tl; dr:你能在上面的代码示例中命名设计模式吗?
答案 0 :(得分:0)
我认为它没有名字。经典的模式集主要基于旧Java和预标准化C ++中的代码,它们都不支持参数多态(模板/泛型),因此需要它们的模式才真正显示出来。就GoF而言,它只是从三个不同的接口继承。
它也有点太难看了,不能作为一种模式。为什么只有这三种类型?为什么不使用Int16或Uint32?为什么界面是通用的,而不是方法?
答案 1 :(得分:0)
一个建议 -
部分可能是Adapter pattern非泛型接口I多次从泛型类型I继承,每个接口都有不同的类型参数。我从I继承的唯一原因是为了声明重载
我也将它与类一起使用。它有助于将类的接口转换为另一个接口,这是期望的。由于接口不兼容,适配器允许类无法协同工作。
老实说,在我的情况下,我不知道在非通用接口I
中实现了什么概念,但我认为这是因为在调用存储对象的通用方法时偶尔会需要以不同的方式处理特定类型。