这是Liskov替换原则违规吗?

Fla*_*ius 0 c# oop solid-principles

我的自定义按钮实际上是一个按钮,它是否违反了LSP?

class ConditionalButton : Button
{
    protected override void OnClick(EventArgs e)
    {
        if (Condition())
            base.OnClick(e);
    }
    private bool Condition()
    {
        //return true or false
    }
}
Run Code Online (Sandbox Code Playgroud)

wes*_*ton 5

这是加强子类型的先决条件.明显违反LSP.

按钮说:

只要启用该按钮,点击即可完成一些工作

ConditionalButton说:

只要启用按钮并且Condition()为true,单击就可以执行一些操作

  • +1这样,OP应该做其他事吗? (2认同)