Temel sınıfın saf bir arabirim sınıfı olmasını ve soyut veya sanal yöntem sınıfı tanımını kullanarak daha iyi bir yaklaşım olan aşağıdaki 2 örneği kullanmanın istenmediğini varsayarsak?
"Soyut" versiyonun avantajı, muhtemelen daha temiz görünmesi ve türetilmiş sınıfı umut verici bir uygulama yapmaya zorlamasıdır.
"Sanal" sürümün avantajı, diğer modüller tarafından kolayca çekilebilmesi ve soyut sürümün gerektirdiği gibi bir grup temel çerçeve eklemeden test için kullanılabilmesidir.
Özet Versiyon:
public abstract class AbstractVersion
{
public abstract ReturnType Method1();
public abstract ReturnType Method2();
.
.
public abstract ReturnType MethodN();
//////////////////////////////////////////////
// Other class implementation stuff is here
//////////////////////////////////////////////
}
Sanal Sürüm:
public class VirtualVersion
{
public virtual ReturnType Method1()
{
return ReturnType.NotImplemented;
}
public virtual ReturnType Method2()
{
return ReturnType.NotImplemented;
}
.
.
public virtual ReturnType MethodN()
{
return ReturnType.NotImplemented;
}
//////////////////////////////////////////////
// Other class implementation stuff is here
//////////////////////////////////////////////
}
return ReturnType.NotImplemented
? Ciddi anlamda? Uygulanmayan türü derleme zamanında reddedemezseniz (soyut yöntemler kullanabilirsiniz) en azından bir istisna atar .