设计模式(一)
1.开闭原则:软件实体应当对外扩展开放,对修改关闭(修改程序是:增加新功能,不准修改原来的程序代码,只能增加新的代码)
2.里氏替换原则:所有引用基类的地方必须能透明的使用其子类的对象;(不能修改父类,我们可以抽象出来一个类 ,让其他物体都继承它)
在面向对象中,继承有很多优点:
1)代码共享,减少创建类的工作量,每个子类都拥有父类的方法和属性;
2)提高代码的重用性;
3)子类可以形似父类,但又异于父类,“龙生龙,凤生凤,老鼠生来会打洞”是说子拥有父的“种”,“世界上没有两片完全相同的叶子”是指明子与父的不同;
4)提高代码的可扩展性,实现父类的方法就可以“为所欲为”了,君不见很多开源框架的扩展接口都是通过继承父类来完成的;
5)提高产品或项目的开放性。
3.依赖倒转原则:依赖倒转原则就是要求客户端依赖于抽象耦合。表述是:抽象应该不依赖于细节,细节应该依赖于抽象;另一种表述:要针对接口编程,不要依赖实现编程。抽象耦合是依赖倒转原则的关键,历史替换原则是依赖倒转原则的基础(历史替换下次讲到)
1)依赖:A use a B ,那么A对B产生了依赖
、
2)依赖关系的种类:
*:零耦合关系:如果两个类中没有耦合关系,称为零耦合
*:具体耦合关系:发生在两个具体的类(可实例化)之间,由一个类对另一个类的直接引用造成的;
*:抽象耦合关系:抽象耦合关系发生在一个具体类和一个抽象类(接口)之间,使两个必须发生关系的类之间存在最大的灵活性
在实际编程中,我们一定要做到一下3点:
- 低层模块尽量都要有抽象类或接口,或者两者都有。
- 变量的声明类型尽量是抽象类或接口。
- 使用继承时遵循里氏替换原则。