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)
这是加强子类型的先决条件.明显违反LSP.
即
按钮说:
只要启用该按钮,点击即可完成一些工作
ConditionalButton说:
只要启用按钮并且Condition()为true,单击就可以执行一些操作