Java设计模式——六大设计原则

来源:互联网 发布:js url动态传参数 编辑:程序博客网 时间:2024/05/17 01:15

1.单一职责原则

单一职责原则的定义是类的变更的原因应该只有一个,它提出用“职责”和“变化原因”来衡量接口或类设计得是否优良,但是这两个因素都是因项目而异因环境而异的,并没有一个量化的标准
单一职责原则使类的复杂性降低,实现什么职责都有清晰的定义,复杂性降低后可读性也就提高了,可读性提高也就更容易进行维护了。如果接口的单一职责做的好,一个接口修改只对相应的实现类有影响,对系统的扩展性和可维护性也有很大提高
除了类与接口之外,方法也同样需要使用单一职责原则,避免方法颗粒度太粗
类尽量做到单一原则,接口一定要做到单一原则

2.里氏替换原则

里氏替换原则定义:只要父类能出现的地方子类就可以出现,替换为子类也不会产生任何错误和异常,但是反过来却不行,有子类的地方父类未必能适应
里氏替换原则为良好的继承定义了规范
1.子类必须完全实现父类的方法,如果子类不能完整的实现父类的方法,建议断开继承,采用依赖,聚集,组合等关系代替继承
2.子类可以有自己的个性
3.覆盖或实现父类方法时参数可以被放大
4.覆写或实现父类方法时输出结果可以被缩小

3.依赖倒置原则

在Java中的表现是:
1.模块间的依赖通过抽象发生,实现类之间不存在直接的依赖关系,其依赖关系是通过接口或抽象类产生的。
2.接口或抽象类不依赖实现类
3.实现类依赖接口或抽象类
依赖的三种写法:
1.构造函数传递依赖对象
2.Setter方法传递依赖对象
3.接口声明传递依赖对象
依赖倒置需遵循规则:
1.每个类尽量都有接口或抽象类
2.变量的表面类型尽量是接口或抽像类
3.任何类都不应该从具体类派生
4.尽量不要覆写基类的方法
5.结合里氏替换原则使用

4.接口隔离原则

两种接口:
1.实例接口,例如:Person lisi = new Person()产生一个实例,这个实例要遵从的就是Person这个类,Person就是lisi的接口。
2.类接口,interface关键字定义的接口
接口隔离原则定义:建立单一接口,不要建立臃肿的接口
通过分散定义接口可以预防未来变更的扩散,提高系统灵活性和可维护性
接口隔离原则含义:
1.接口要尽量小,但不能违反单一职责原则
2.接口要高内聚,即减少对外交互,提高接口,类,模块处理能力
3.定制服务
4.接口设计是有限度的

5.迪米特法则

定义:一个对象应该对其他对象有最少的了解
含义:
1.一个方法尽量不引入一个类中不存在的对象JAVAAPI除外
2.尽量不要公布太多的public方法和非静态的public变量
3.如果一个方法放在本类中,既不增加类间的关系,也对本类不产生负面影响,那就放置在本类中

6.开闭原则

定义:软件实体应该对扩展开发,对修改关闭
开闭原则可以提高代码复用性,可维护性,并且符合面向对象开发的要求
如何使用开闭原则:

  • 抽象约束:
    1.通过接口或抽象类约束扩展,对扩展进行边界限定,不允许出现在接口或抽象类中没有的public方法
    2.参数类型,引用对象尽量使用接口或抽象类,而非实现类
    3.抽象层尽量保持稳定
  • 元数据控制模块行为
  • 制定项目章程
  • 封装变化
0 0
原创粉丝点击