为了清楚起见,从类继承是可以接受的吗
本文关键字:继承 清楚 | 更新日期: 2023-09-27 17:57:43
假设我有一个只存储键/值对的模板/泛型类:
public class GenericDatabase<Key, T>
{
public Dictionary<Key, T> Data { get; set; }
public GenericDatabase()
{
Data = new Dictionary<Key, T>();
}
...
}
为了清楚起见,在不引入任何新方法或成员变量的情况下从中派生类是可以接受的吗?例如,假设我想要一个字符数据库:
public class CharacterDatabase : GenericDatabase<string, CharacterStat>
{
// no new methods or member variables
}
IMO为了清晰起见引入继承级别会让其他开发人员感到困惑。我认为通用声明已经足够清楚了。
GenericDatabase<string, CharacterStat>
在OOP中,没有什么能阻止您这样做。然而,我在许多地方看到,它们使用标记接口而不是基类来指示某些内容。标记接口通常没有公共成员,只用于标记类作为的示例。
你可以看看这些链接:
Wikipedia=>标记接口模式
什么是标记接口
这是一种不同的语言。。但请看一下c++是如何定义其CCD_ 1类的。
typedef basic_string<char> string;
我只是想指出,这种做法不仅很常见,而且被标准的图书馆作家自己使用。
如果您要多次使用CharacterDatabase
,我会支持这样的步骤。此外,我不确定C#是否为此提供了比继承更简单的机制(比如C++的typedef
),但最好是这样。
using指令可以像typedef一样使用,但它只影响在.中声明的文件
using CharacterDatabase = GenericDatabase<string, CharacterStat>
对我来说,这取决于使用的具体类型。
如果我有
GenericDatabase<string, CharacterStat>
我会让它保持原样——这是清楚的。但如果我有
GenericDatabase<string, ArrayList<Pair<CharacterStat,Integer> > >
那么我肯定会给它一个名字,一个真正能解释的名字;)。