首页 > 其他分享 >[SOLID] — Liskov 替换原则

[SOLID] — Liskov 替换原则

时间:2022-08-31 03:22:55浏览次数:76  
标签:原则 SOLID Review Liskov WrittenReview 替换

[SOLID] — Liskov 替换原则

SOLID 原则是五个设计原则,旨在使面向对象编程中的代码易于理解、灵活和可维护。

里氏替换原则

如果 S 是 T 的子类型,则应将 T 替换为 S 而不会破坏应用程序。

让我们考虑电子商务服务示例中的相同 Review 类 单一职责原则 开闭原则 .

假设我将 Review 类扩展到 WrittenReview。

现在 Liskov 替换原则建议将类 Review 替换为类 WrittenReview,并且不应破坏任何内容。

但是,在这种情况下,使用 ReviewCalculator 计算平均评论(请参阅 单一职责原则 ) 将导致 NullPointerException,因为 WrittenReview 没有分数属性。

解决此类问题可能会很棘手。

  • 我们可以将 ReviewCalculator 更改为仅计算从 Review 扩展而来的 NumberReview 类的平均值。
  • 我们可以对类进行重构,以便类 Review 应该包含分数,并从名为 FeedBack 的接口继承它。 WrittenReview 的类名可以更改为WrittenFeedBack。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/2010/17383103

标签:原则,SOLID,Review,Liskov,WrittenReview,替换
From: https://www.cnblogs.com/amboke/p/16641568.html

相关文章

  • macOS & VSCode 批量替换快捷键 All In One
    macOS&VSCode批量替换快捷键AllInOneVSCode批量选中替换快捷键Command+F选中多个✅Option+Enter替换多个✅demo#VSCode批量替换,快捷键Command+......
  • C#替换字符串中第一个出现的指定字符串
    Regexr=newRegex(childstr);str=r.Replace(str,"",1);应用:已知一个字符串,比如asderwsde,寻找其中的一个子字符串比如sde的个数,如果没有返回0,有的话返回子字符串......
  • C# Word替换文本
    引用Nuget包Spire.Doc使用Spire.Doc会在文档开头生成水印using(Documentdoc=newDocument(templateWordFilePath)){doc.Replace("oldvalue","newvalue",tr......
  • SolidKits WeldmentPlus焊件增强工具
    SOLIDWORKS的多实体设计非常灵活高效,特别是利用结构焊件的设计方式,调用焊接轮廓,直接生成型材,也可以采用特征多实体,设计出板材、钣金等多实体零件。但是,如果不加规范,随意使......
  • IfcSolidOrShell
    IfcSolidOrShell类型定义iFCSolidShell提供了选择几何模型中的几何体(iFCSoledModel和子类型)或拓扑模型中的壳(IfcClosedShell)的选项。 IFC4中的新选择类型。  Enu......
  • Homebrew替换源
    说明:原文(https://www.jianshu.com/p/6ea6e19c060d)这个问题困扰了我很久,在网上找了很多资料。都是断章取义。没介绍完整,都没有实际效果;最近需要在本地安装mysql。为了安......
  • 0基础替换数据:智慧城市可视化大屏模板合集
    听说你还在找智慧城市大屏的模板?这不就来了嘛~! 本文精选了山海鲸可视化的6份智慧城市大屏模板,颜值天花板+高级感拉满!最重要的是只需要将自己的数据替换到模板中去,再将组......
  • 自动替换文件内容、文件名、文件夹名
    voidMain(){varroot=@"c:\smartcampus-submodule\zhzp";//varextensions=string.Join(",",getFileExtensions(root));//extensions.Dump();......
  • 关于使用不定参数params传参替换文本的小例子
    今天又学到了新知识,开发中,客户端可能需要替换配置文本里面的一些参数,比如下面这句战报文本:{s}悍然出击,刹那间对{s}造成<color=#FF0000>{s}</color>伤害最初是把{}里面都......
  • [四、Xcode界面]17代码的查找和替换
    热烈欢迎,请直接点击!!!进入博主AppStore主页,下载使用各个作品!!!注:博主将坚持每月上线一个新app!!!......