首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命名此设计模式

命名此设计模式
EN

Stack Overflow用户
提问于 2014-09-19 16:09:16
回答 2查看 44关注 0票数 0

在研究继承概念在C#中的实际应用时,我发现了一个有趣的代码模式。非泛型接口I多次从泛型类型I<T>继承,每次都有不同的类型参数。I继承自I<T>的唯一原因是为了声明重载,除了继承关系之外,I<T>在代码中的任何地方都不会被引用。举例说明:

代码语言:javascript
复制
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++,其中还可以提供操作的实现。

你能说出上面代码示例中的设计模式吗?

EN

回答 2

Stack Overflow用户

发布于 2014-09-19 16:14:54

我不认为它有名字。经典的模式集主要基于旧的Java和标准化前的C++中的代码,这两种语言都不支持参数多态性(模板/泛型),因此需要它们的模式并不会真正出现。就GoF而言,这只是从三个不同的接口继承而来。

它也有点太难看了,不能被定义为模式。为什么只有这三种类型?为什么不是Int16或Uint32呢?为什么接口是泛型的,而不是方法?

票数 0
EN

Stack Overflow用户

发布于 2014-09-19 17:46:52

一个建议-可以是Adapter pattern的一部分

非泛型interfaceI多次从泛型I继承,每次都有不同的类型参数。我继承自i的唯一原因是为了声明重载

我也会在类中使用它。它有助于将一个类的接口转换为另一个接口,即expect。Adapter允许类协同工作,否则由于接口不兼容而无法协同工作。

老实说,我不知道在非泛型接口I中实现了什么概念,但我想这是因为当调用泛型方法来存储对象时,有时需要以不同的方式处理特定的类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25929222

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档