未使用のメソッドを持つクラスの継承は、インターフェイスの分離の原則に違反しますか?例えば継承とインターフェイスの分離の原則
:
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
は方法Base.Receive(int n)
に依存しますが、それはそれを使用することはありません。
UPD
定義は私が使用します。
ISPには、クライアントはそれが 使用しない方法に依存することを強制すべきではないと述べています。
を必要とすることができ、私は受け取った場合OnMsgが今までと呼ばれることだろうか、この例では、それはそれを使用しないことをことを確認してくださいされていませんよ使用されていない? – BlackICE
私の場合、 'OnMsg'を呼び出す唯一の方法は' Receive'です。 'string n'を使った' Concrete'のインターフェースに入力データ(int n)を投影するためには、この継承が必要です。実際の例では、 'ToString()'よりも複雑な作業がいくつかあります。 – astef
@astef:パウロが正しく指摘したように、あなたはここで 'template design pattern'を使っています。 –