PHP设计模式—六大原则

一般认为遵从以下六大原则的代码是可扩展易维护高复用的代码:

1.单一职责原则

不要多管闲事。

2.开放封闭原则

对扩展开放,对修改封闭

3.里氏代换原则

  • 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
  • 子类中可以增加自己特有的方法。
  • 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
  • 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。

引自大话设计模式一书 p41

“里氏代换原则是Barbara Liskov 女士 在1988 年发表的【ASD】,具体的数学定义比较复杂,你可以查相关资料,它的白话翻译就是一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它观察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单地说,子类型必须能够替换掉它们的父类型【ASD】” .

里氏代换原则(LSP):子类型必须能替换掉它们的父类型。【ASD】

“这好像是学继承时就要理解的概念,子类继承了父类,所以子类就可以以父类的身份出现。”

“是的,我问你个问题,如果在面向对象设计时,一个鸟类,一个是企鹅类,如果鸟是可以飞的,企业是不会飞,那么企业是鸟吗?企鹅可以继承鸟这个类吗?”

“企鹅是一种特殊的鸟,尽管不能飞,但它也是鸟,当然可以继承。”

“哈,你上当了,我说的是在面象对象设计时,那又意味什么那?子类拥有父类所有非private的行为和属性。鸟会飞,而企鹅不会飞,尽管在生物学分类上,企鹅是一种鸟,但在编程世界里,企鹅不能以父类–鸟的身份出现,因为前提说所有鸟都能飞,企鹅飞不了,所以,企鹅不能继承鸟类。”

4.接口隔离原则

5.依赖倒转原则

6.迪米特法则–最少知道原则

 这六大原则任何面向对象的语言都应该遵守,好的代码不一定是严格按照设计模式写的代码,如果你的代码符合这六大原则,那么你的代码就是好代码,所以这六大原则还是很重要的。

    原文作者:sinat_25139121
    原文地址: https://blog.csdn.net/sinat_25139121/article/details/56835092
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞