一般认为遵从以下六大原则的代码是可扩展易维护高复用的代码:
1.单一职责原则
不要多管闲事。
2.开放封闭原则
对扩展开放,对修改封闭
3.里氏代换原则
- 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法。
- 子类中可以增加自己特有的方法。
- 当子类的方法重载父类的方法时,方法的前置条件(即方法的形参)要比父类方法的输入参数更宽松。
- 当子类的方法实现父类的抽象方法时,方法的后置条件(即方法的返回值)要比父类更严格。
引自大话设计模式一书 p41
“里氏代换原则是Barbara Liskov 女士 在1988 年发表的【ASD】,具体的数学定义比较复杂,你可以查相关资料,它的白话翻译就是一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它观察不出父类对象和子类对象的区别,也就是说,在软件里面,把父类都替换成它的子类,程序的行为没有变化,简单地说,子类型必须能够替换掉它们的父类型【ASD】” .
里氏代换原则(LSP):子类型必须能替换掉它们的父类型。【ASD】
“这好像是学继承时就要理解的概念,子类继承了父类,所以子类就可以以父类的身份出现。”
“是的,我问你个问题,如果在面向对象设计时,一个鸟类,一个是企鹅类,如果鸟是可以飞的,企业是不会飞,那么企业是鸟吗?企鹅可以继承鸟这个类吗?”
“企鹅是一种特殊的鸟,尽管不能飞,但它也是鸟,当然可以继承。”
“哈,你上当了,我说的是在面象对象设计时,那又意味什么那?子类拥有父类所有非private的行为和属性。鸟会飞,而企鹅不会飞,尽管在生物学分类上,企鹅是一种鸟,但在编程世界里,企鹅不能以父类–鸟的身份出现,因为前提说所有鸟都能飞,企鹅飞不了,所以,企鹅不能继承鸟类。”
4.接口隔离原则
5.依赖倒转原则
6.迪米特法则–最少知道原则
这六大原则任何面向对象的语言都应该遵守,好的代码不一定是严格按照设计模式写的代码,如果你的代码符合这六大原则,那么你的代码就是好代码,所以这六大原则还是很重要的。