设为首页 加入收藏

TOP

Java 设计模式(二)-六大原则
2017-10-13 10:40:41 】 浏览:4167
Tags:Java 设计模式 六大 原则

               Java 设计模式(二)-六大原则

单一职责原则(Single Responsibility Principle)

定义:

不要存在多余一个原因导致类变更,既一个类只负责一项职责。

问题由来:

当类A有两个不同职责P1和P2时,当类A的职责P1需要修改时,可能影响职责P2的功能不能正常运行。

解决方案:

将类A分为类A1和类A2,A1的职责时P1,A2的职责是P2,此时修改P1或P2职责都不影响另一职责。

优点:

降低类负责度

降低变更引起的风险

提高类的可读性

提高系统的可维护性

里氏替换原则(Liskov Substitution Principle)

定义:

所有引用基类的地方都能透明的使用其子类的对象

问题由来:

   子类B在继承父类A的同时可能重载父类或重写父类导致,导致父类A的功能异常。

解决方案:

   当使用继承时,遵循里氏替换原则,子类可实现父类的抽象方法,但不能覆盖父类的非抽象方法,当子类重载父类方法时,子类方法的参数要比父类方法的参数要宽松。

优点:

降低代码重用错误。

依赖倒置原则(Dependence Inversion Principle)

定义:

高层模块不应该依赖低层模块,二者都应该依赖其抽象,抽象不应该依赖细节,细节应该依赖抽象。

问题由来:

类A直接依赖类B,假如要将类A改为依赖类C,则必须通过修改类A的代码来达成。这种场景下,类A一般是高层模块,负责复杂的业务逻辑;类B和类C是低层模块,负责基本的原子操作;假如修改类A,会给程序带来不必要的风险。

解决方案:

低层模块尽量要有抽象类和接口

变量的生命类型尽量时抽象类型或接口

使用继承时遵循里氏替换原则

优点:

    降低类之间的耦合性,

提高系统的稳定性,

降低修改程序造成的风险。

接口隔离原则(Interface Segregation Principle)

定义:

客户端不应该依赖他不需要的接口,一个类对另一个类的依赖应该建立在最小接口基础之上。

问题由来:

    类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。

   

解决方案:

  接口尽量小,但是要有限度。对接口进行细化可以提高程序设计灵活性是不挣的事实,但是如果过小,则会造成接口数量过多,使设计复杂化。所以一定要适度。

为依赖接口的类定制服务,只暴露给调用的类它需要的方法,它不需要的方法则隐藏起来。只有专注地为一个模块提供定制服务,才能建立最小的依赖关系。

提高内聚,减少对外交互。使接口用最少的方法去完成最多的事情。

优点:

     提高系统的灵活性

     提高系统的可维护性

迪米特法则(Law Of Demeter

定义:

一个对象应对其它对象保持最少的了解

问题由来:

    类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大。

解决方案:

       类间解耦,弱耦合

优点:

    提高代码的重用率

开闭原则(Open Closed Principle)

定义:

一个软件实体如类,模块,函数应该对外拓展开发,修改关闭

问题由来:

    当软件需要变化时,尽量通过扩展软件实体的行为来实现变化,而不是通过修改已有的代码来实现变化。

解决方案:

    合理使用拓展接口

优点:

  提高程序的可拓展性

  提高程序的可维护性

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇java面向对象中的关键字 下一篇多态 ( 向上造型、向下造型)

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目