美文网首页
面向对象的5大原则

面向对象的5大原则

作者: lifefruity | 来源:发表于2020-11-23 17:03 被阅读0次

SOLID
S:单一职责原则
功能单一,比如计算面积,就单单地返回值,不要返回json 或者 html

O:开闭原则
不要修改,需要扩展

L:里氏替换原则

/*
里氏替换原则通俗的来讲就是:子类可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
1.子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
2.子类中可以增加自己特有的方法。
3.当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
4.当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
*/
class demo {
    public function f1($a, $b)
    {
        return $a-$b;
    }
}


class demo1 extends demo {
    public function f1($a, $b)
    {
        return $a+$b;
    }
    
    public function f2($a, $b)
    {
        return $this->f1($a, $b)+100;
    }
}


//在本例中,引用基类demo完成的功能,换成子类demo1之后,发生了异常
$demo = new demo();
echo '100-50='.$demo->f1(100,50)."<br>";//150
echo '150-50='.$demo->f1(150,50)."<br>";//200


$demo1 = new demo1();
echo '100-50='.$demo1->f1(100,50)."覆盖方法了错误<br>";//150
echo '150-50='.$demo1->f1(150,50)."覆盖方法了错误<br>";//200
echo '100+20+100='.$demo1->f2(100,20)."覆盖方法了错误<br>";//220

I:接口隔离原则
有个动物的接口,有fly()的功能,但是小鸟有飞的功能,小猪没有这个功能。所以应该有2个接口,一个是会飞的接口,一个是最基础的动物接口。那么小鸟需要实现这2个接口,小猪实现最基础那个就行。

D:依赖反转原则
有个登录的方法,这样是不合理的,因为依赖了MySQLConnection,如果不用mysql,换了其它数据库,还需要去修改它,其实也违反了开闭原则

class Login{
    private $dbConnection;

    public function __construct(MySQLConnection $dbConnection) {
        $this->dbConnection = $dbConnection;
    }
}

正确的方法应该是针对接口编程

class Login{
    private $dbConnection;

    public function __construct(DBConnectionInterface $dbConnection) {
        $this->dbConnection = $dbConnection;
    }
}

相关文章

  • Android 设计模式之常见设计模式总结

    今天我们来总结下我们所学习的设计模式 面向对象的六大原则 Android 设计模式之面向对象的六大原则 面向对象的...

  • 面向对象三大特性-----封装、继承、多态

    前言 前面有文章写到了面向对象编程和面向对象设计的头五大原则(SOLID五大原则)。今天我们再来谈谈面向对象的三大...

  • SOLID

    面向对象程序设计5大原则 单一职责原则(Single Responsibility Principle) 开放封闭...

  • 浅谈Java面向对象

    前言 在之前的文章中,讲到了面向的 3 大特性(封装、继承、多态)和面向对象设计的 5 大原则(SRP、OCP、L...

  • SOLID五大原则

    SOLID五大原则 ​ 面向对象编程有五大原则: Single responsibility prin...

  • 设计模式六大原则

    设计模式六大原则 一、面向对象设计六大原则 面向对象的关键在于封装,封装好了才能很好的复用,达到单一职责和开放扩展...

  • 面试笔试 - Java基础

    面向对象三大特征和七大原则 面向对象三大特征和七大原则 三大特征 封装 封装 就是对属性和方法的载体类,只能通过其...

  • 面向对象的5大原则

    概念 在程序设计领域, SOLID(单一功能、开闭原则、里氏替换、接口隔离以及依赖反转)是由罗伯特·C·马丁在21...

  • 面向对象的5大原则

    SOLIDS:单一职责原则功能单一,比如计算面积,就单单地返回值,不要返回json 或者 html O:开闭原则不...

  • 面向对象

    面向对象的3大特性 封装 继承 多态 面向对象的几大原则 单一职责原则 里氏替代原则 依赖倒转原则 开放-封闭原则...

网友评论

      本文标题:面向对象的5大原则

      本文链接:https://www.haomeiwen.com/subject/ljsviktx.html