我无法确定下面这两个示例的优点和缺点。理想情况下,我想知道它的重量高达最佳的设计方案:空派生类与Vs类型属性
例1(类型属性):
public abstract class Animal : /* all relevant interfaces*/
{
/*
All necessary implementations
*/
}
Public class Dog : Animal
{
Public string Name {get; set;}
Public Breed Type {get; set;}
/*
All necessary implementations
*/
}
Public Type Breed
{
Bulldog,
Chihuahua,
Labrador,
/*
So on……
This can grow without limitation,
you dno't know how much it will grow into, or
what breed you will have tomorrow e.g BulldogChihuahuaCross,
or BulldogLabradorCross.
*/
}
例2(空派生类):
public abstract class Animal : /* all relevant interfaces*/
{
/*
All necessary implementations
*/
}
Public class Dog : Animal
{
Public string Name {get; set;}
/*
All necessary implementations
*/
}
Public class Bulldog : Dog
{
/* Empty Class */
}
Public class Chihuahua: Dog
{
/* Empty Class */
}
Public class Labrador: Dog
{
/* Empty Class */
}
编辑:
在示例1创建Dog的实例,并将其类型指定为属性,在示例2中创建该特定类型的实例。
我正在寻找一些深入的论点,可扩展性,可维护性,在CPU上的成本,如果有1000种品种,运行查询等费用。
这实际上是一个非常好的问题,大多数人都懒得问。我认为对你来说,这是一个很好的答案,但是直到今天晚些时候,你才没有时间写出来。敬请关注。 –
@ JimL.I期待着您的回答。 – Jegan
@JimL。或者像费马特说:我有一个很好的证据,但这里的边际太窄了,不能写下来;-) –