文章目录
- 1.开闭原则:对扩展开放,对修改关闭
- 2.里氏代换原则:子类继承父类时,除添加新的方法完成新增功能外,尽量不要重写父类的方法
- 3.依赖倒转原则:高层模块不应该依赖低层模块,两者都应该依赖其抽象
- 4.接口隔离原则:一个类对另一个类的依赖应该建立在最小的接口上
- 5.迪米特原则:不直接通信,由中介转发
- 6.合成复用原则
1.开闭原则:对扩展开放,对修改关闭
需要使用接口和抽象类
在程序需要进行拓展的时候,不能去修改原有的代码
只要抽象的合理,可以基本保持软件架构的稳定,而软件中易变的细节可以从抽象派生来的实现类来进行扩展,当软件需要发生变化时,只需要根据需求重新派生一个实现类来扩展就可以了。
例:搜狗输入法的皮肤设计
可以为其定义一个抽象类(AbstractSkin),每个具体的皮肤(DefaultSpecificSkin和HeimaSpecificSkin)是其子类。用户窗体可以根据需要选择或者增加新的主题,而不需要修改原代码,满足开闭原则。
6.合成复用原则
尽量先使用组合或聚合等关联关系来实现,其次才考虑使用继承关系来实现
类的复用分为继承复用和合成复用两种。
继承复用:
- 优点:简单,易实现
- 缺点:
- 继承复用破坏了类的封装性,因为继承会将父类的实现细节暴露给子类,父类对子类是透明的,所以这种复用又称为白箱复用。
- 子类与父类的耦合度高。父类的实现的任何改变都会导致子类的实现发生变化,这不利于类的扩展与维护。
- 限制了复用的灵活性。从父类继承而来的实现是静态的,在编译时已经定义,在运行时不可能发生变化。
合成复用:
采用组合或聚合复用时,可以将已有对象纳入新对象中,使之成为新对象的一部分,新对象可以调用已有对象的功能。
- 优点:
- 维持了类的封装性,因为成分对象的内部细节是新对象看不见的,所以这种复用又称为黑箱复用
- 对象间的耦合度低,可以在类的成员位置声明抽象
- 复用的灵活性高,这种复用可以在运行时动态进行,新对象可以动态地引用与成分对象类型相同的对象
例:汽车分类管理
汽车按“动力源”划分可分为汽油汽车、电动汽车等。按“颜色”划分可分为白色汽车、黑色汽车和红色汽车等。如果同时考虑这两种分类,组合有很多。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!