Czy dziedziczenie z klasy z nieużywanymi metodami narusza zasadę segregacji interfejsu?Zasada podziału na dziedziczenie i interfejs
Na przykład:
abstract class Base
{
public void Receive(int n)
{
// . . . (some important work)
OnMsg(n.ToString());
}
protected abstract void OnMsg(string msg);
}
class Concrete : Base
{
protected override void OnMsg(string msg)
{
Console.WriteLine("Msg: " + msg);
}
}
Concrete
zależy od sposobu Base.Receive(int n)
, ale nigdy nie używa.
UPD
Definicja używam:
ISP stwierdza, że klient nie powinien być zmuszony polegać na metodach to nie używają.
nie jestem pewien, że w tym przykładzie, że nie używa go, w jaki sposób OnMsg kiedykolwiek nazwać jeśli Otrzymuj jest nieużywany? – BlackICE
W moim przypadku jedynym sposobem na wywołanie 'OnMsg' jest od' Receive'. Potrzebuję tego dziedziczenia, aby projektować przychodzące dane ('int n') do interfejsu' Concrete', który używa 'ciągu msg'. W prawdziwym przykładzie jest trochę bardziej skomplikowana praca niż tylko 'ToString()' – astef
@astef: Jak słusznie zauważył Paulo, używasz 'wzoru szablonu' tutaj :) –