解构LSP

您好,我叫Dmitry Karlovsky。您在Core Dump上,在这里我们从计算机科学中提取不同的主题,并逐个分解它们。这次,我们将从最具体的角度开始解构SOLID原则。



早在1987年,芭芭拉·里斯科夫(Barbara Liskov)就制定了为自己起名的原则。



里斯科夫替代原则

它使您能够了解是否正确编写了多态代码。但是在制定它之前,我们需要了解定义中包含的一些概念。



录像带的分析



超型-亚型关系



我们程序中的所有数据都属于一种或另一种类型。类型定义可能值的集合及其语义。一种类型可以完全包括另一种类型。在这种情况下,第二类型是第一类型的子类型。这样,类型可以形成层次结构。让我们看一个带有数字的示例。





整数类型和正数类型都是实数类型的特殊情况,因此是其子类型。同时,整体并不包括所有积极的事物。积极的不包括全部。因此,这些类型在父类型-子类型关系中不属于彼此。但是自然数既是整数又是正数,因此自然数的类型是这两种类型的子类型。



"-" , , — , .





. , . . , , — , .





, , .





— .





, draw . — .



LSP —



, : " , , , ".





, , , , , . , LSP : , .



, ...



LSP



, -, , .





, , "", . . , , . LSP. , . "".





, , , . ..



  1. ( )
  2. ( )
  3. :

    • ( )
    • ( )


, , LSP .



LSP



- . , , , , LSP . — .





, , , .



LSP



, LSP , ...



" , , , ".



, , — . , , .





LSP?



, , LSP. , , , . , - , . , .



LSP, , — , . . , .



  • LSP :-(
  • :-)


?



. , , .



:

, . - . - . - . , , , .



..









-

如果该分析对您似乎有用,请通过类似的方式让我知道。并与您的同事共享一个链接。



如果您不同意任何想法,或者相反,感到有些轻描淡写并想补充您的想法,那么我期待您的评论。



如果您不害怕与我进行空中辩论,或者甚至准备成为未来分析的合著者,那么请写电报



最后,订阅该频道,这样您就不会错过更多的见解。我们还有很多要与您讨论。



目前为止就这样了。和你在一起的是一个小程序员Dmitry Karlovsky。




All Articles