首页 > php教程 > php教程 > 正文

什么是里氏代换原则?(举例说明)

转载 2019-04-15 15:42:32 0 524
第六期线上培训班
里氏代换原则

里氏替换原则LSP讲的是基类和子类的关系。只有当这种关系存在时,里氏代换关系才存在。如果两个具体的类A,B之间的关系违反了LSP的设计,(假设是从B到A的继承关系)那么根据具体的情况可以在下面的两种重构方案中选择一种。

<?php
//举例说明继承的风险,我们需要完成一个两数相减的功能,由类A来负责。
class a{
public $width;
public $height;
public function func1($a, $b){  
        return $a - $b;  
    }
}
$a = new a();
echo $a->func1(100,50);
//运行结果100-50=50

后来,我们需要增加一个新的功能:完成两数相加,然后再与100求和,由类B来负责。即类B需要完成两个功能:

采用类B继承类A代码如下:

class b extends a{  
    public function func1($a, $b){  
        return $a + $b;
    }  
      
    public function func2($a, $b){  
        return $this->func1($a, $b) + 100;
    } 
}
$b = new b();
echo $b->func2(100, 50);

假设类B在给方法起名时无意中重写了父类的方法,造成所有运行相减功能的代码全部调用了类B重写后的方法,造成原本运行正常的功能fun1出现了错误(错误的原因是减法变成了加法而其他使用者并不知道。别总想着代码是一个人写的呦!还有大家没有时间去逐行读你的代码,他们只是按照规则进行应用)。

里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:

1、子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。

2、子类中可以增加自己特有的方法。

3、当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。

4、当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

看上去很不可思议,因为我们会发现在自己编程中常常会违反里氏替换原则,程序照样跑的好好的。所以大家都会产生这样的疑问,假如我非要不遵循里氏替换原则会有什么后果?

后果就是:你写的代码出问题的几率将会大大增加。

以上就是什么是里氏代换原则?(举例说明)的详细内容,更多请关注php中文网其它相关文章!

php中文网最新课程二维码
  • 相关标签:里氏代换原则
  • 本文转载于:hcoder,如有侵犯,请联系删除
  • 相关文章


  • Java中里氏代换原则介绍
  • 设计模式七大原则总结
  • MVC架构的职责划分原则
  • 开闭原则是指什么?
  • 什么是里氏代换原则?(举例说明)
  • 网友评论

    文明上网理性发言,请遵守 新闻评论服务协议

    我要评论
    独孤九贱(5)_ThinkPHP5视频教程

    独孤九贱(5)_ThinkPHP5视频教程

    ThinkPHP是国内最流行的中文PHP开发框架,也是您Web项目的最佳选择。《php.cn独孤九贱(5)-ThinkPHP5视频教程》课程以ThinkPHP5最新版本为例,从最基本的框架常识开始,将...

    独孤九贱(4)_PHP视频教程

    独孤九贱(4)_PHP视频教程

    江湖传言:PHP是世界上最好的编程语言。真的是这样吗?这个梗究竟是从哪来的?学会本课程,你就会明白了。 PHP中文网出品的PHP入门系统教学视频,完全从初学者的角度出发,绝不玩虚的,一切以实用、有用...

    独孤九贱(1)_HTML5视频教程

    独孤九贱(1)_HTML5视频教程

    《php.cn原创html5视频教程》课程特色:php中文网原创幽默段子系列课程,以恶搞,段子为主题风格的php视频教程!轻松的教学风格,简短的教学模式,让同学们在不知不觉中,学会了HTML知识。 ...

    ThinkPHP5实战之[教学管理系统]

    ThinkPHP5实战之[教学管理系统]

    本套教程,以一个真实的学校教学管理系统为案例,手把手教会您如何在一张白纸上,从零开始,一步一步的用ThinkPHP5框架快速开发出一个商业项目。

    PHP入门视频教程之一周学会PHP

    PHP入门视频教程之一周学会PHP

    所有计算机语言的学习都要从基础开始,《PHP入门视频教程之一周学会PHP》不仅是PHP的基础部分更主要的是PHP语言的核心技术,是学习PHP必须掌握的内容,任何PHP项目的实现都离不开这部分的内容,通...

    作者信息

    藏色散人

    好好学习天天向上!

    最近文章
    php dir()函数的使用详解 818
    使用memcache来保存session 536
    PHP如何操作Memcache缓存? 858

    相关视频教程

  • 设计模式 设计模式
  • 数据库设计那些事 数据库设计那些事
  • TP模块化开发商城----(四)栏目修改删除与商品表设计 TP模块化开发商城----(四)栏目修改删除与商品表设计
  • PHP高级设计模式视频教程 PHP高级设计模式视频教程
  • 相关视频章节

    第六期线上培训班